Bläddra i källkod

add support for setting NeteaseMusic Cookie

CN_SZTL 5 år sedan
förälder
incheckning
c6ba57e1eb

+ 1 - 1
README.md

@@ -10,7 +10,7 @@
 4. 支持将服务公开至公网(默认监听局域网),支持开启严格模式
 5. 支持设定代理,支持指定网易云音乐服务器IP,支持设定EndPoint
 6. 支持手动/自动更新Core,确保插件正常运作
-7. 支持设定QQ Cookie/Youtube API,以正常使用相关音源
+7. 支持设定NeteaseMusic Cookie/QQ Cookie/Youtube API,以正常使用相关音源
 8. 支持在开启Adbyby/KoolProxy的环境下工作
 9. 支持无损音质(目前仅支持QQ、酷我、咪咕音源)
 

+ 6 - 0
luasrc/model/cbi/unblockneteasemusic.lua

@@ -14,6 +14,7 @@ enable.rmempty = false
 
 music_source = s:option(Value, "music_source", translate("音源接口"))
 music_source:value("default", translate("默认"))
+music_source:value("netease", translate("网易云音乐"))
 music_source:value("qq", translate("QQ音乐"))
 music_source:value("kuwo", translate("酷我音乐"))
 music_source:value("migu", translate("咕咪音乐"))
@@ -26,6 +27,11 @@ music_source.description = translate("自定义模式下,多个音源请用空
 music_source.default = "default"
 music_source.rmempty = false
 
+neteasemusic_cookie = s:option(Value, "neteasemusic_cookie", translate("NeteaseMusic Cookie"))
+neteasemusic_cookie.description = translate("在 music.163.com 获取,需要MUSIC_U值")
+neteasemusic_cookie.datatype = "string"
+neteasemusic_cookie:depends("music_source", "netease")
+
 qq_cookie = s:option(Value, "qq_cookie", translate("QQ Cookie"))
 qq_cookie.description = translate("在 y.qq.com 获取,需要uin和qm_keyst值")
 qq_cookie.placeholder = "uin=; qm_keyst="

+ 1 - 0
root/etc/config/unblockneteasemusic

@@ -2,6 +2,7 @@
 config unblockneteasemusic
 	option enable '0'
 	option music_source 'default'
+	option neteasemusic_cookie ''
 	option qq_cookie ''
 	option youtube_key ''
 	option enable_flac '0'

+ 11 - 0
root/etc/init.d/unblockneteasemusic

@@ -10,6 +10,7 @@ lan_addr="$(uci get network.lan.ipaddr)"
 enable="$(uci get unblockneteasemusic.@unblockneteasemusic[0].enable)"
 
 music_source="$(uci get unblockneteasemusic.@unblockneteasemusic[0].music_source)"
+neteasemusic_cookie="$(uci get unblockneteasemusic.@unblockneteasemusic[0].neteasemusic_cookie 2>"/dev/null")"
 qq_cookie="$(uci get unblockneteasemusic.@unblockneteasemusic[0].qq_cookie 2>"/dev/null")"
 youtube_key="$(uci get unblockneteasemusic.@unblockneteasemusic[0].youtube_key 2>"/dev/null")"
 
@@ -136,6 +137,16 @@ start()
 	[ ! -e "/usr/share/unblockneteasemusic/core/app.js" ] && { rm -f "/usr/share/unblockneteasemusic/local_ver"; bash "/usr/share/unblockneteasemusic/update.sh" "update_core_non_restart"; }
 	[ ! -e "/usr/share/unblockneteasemusic/core/app.js" ] && { echo "Core Not Found, please download it before starting." >> "/tmp/unblockneteasemusic.log"; exit 1; }
 
+	[ -n "${neteasemusic_cookie}" ] && {
+		ub_cookie_line="$(sed -n -e "/netease.path.includes('song\/enhance')/=" "/usr/share/unblockneteasemusic/core/src/hook.js")";
+		[ -n "${ub_cookie_line}" ] && { let ub_cookie_endline="${ub_cookie_line}+6"; sed -i "${ub_cookie_line},${ub_cookie_endline}d" "/usr/share/unblockneteasemusic/core/src/hook.js"; }
+		sed -i "/netease.path == '\/api\/song\/enhance\/download\/url'/i\\\t\\t\\t\\tif (netease.path.includes('song\/enhance')) {" "/usr/share/unblockneteasemusic/core/src/hook.js";
+		sed -i "/if (netease.path.includes('song\/enhance')) {/a\\\t\\t\\t\\t\\treq.headers.cookie = [" "/usr/share/unblockneteasemusic/core/src/hook.js";
+		sed -i "/req.headers.cookie = \[/a\\\t\\t\\t\\t\\t\\t'MUSIC_U=${neteasemusic_cookie}'," "/usr/share/unblockneteasemusic/core/src/hook.js";
+		sed -i "/'MUSIC_U=${neteasemusic_cookie}',/a\\\t\\t\\t\\t\\t\\treq.headers.cookie.replace(\/\\\s*MUSIC_\\\w=[^\\\s;]+;*\/g, '')" "/usr/share/unblockneteasemusic/core/src/hook.js";
+		sed -i "/req.headers.cookie.replace(\/\\\s\\*MUSIC_\\\w=[^\\\s;]\\+/a\\\t\\t\\t\\t\\t].filter(line => line).join('; ')" "/usr/share/unblockneteasemusic/core/src/hook.js"
+		sed -i "/].filter(line => line).join('; ')/a\\\t\\t\\t\\t}\\n" "/usr/share/unblockneteasemusic/core/src/hook.js"
+}
 	[ -n "${qq_cookie}" ] && {
 		qq_cookie_line="$(awk "/'cookie':/{print NR}" "/usr/share/unblockneteasemusic/core/src/provider/qq.js")";
 		sed -i "${qq_cookie_line}d" "/usr/share/unblockneteasemusic/core/src/provider/qq.js";