批处理之家's Archiver

5i365 发表于 2022-5-8 22:02

【已解决】下载链接中有不明的字符PowerShell怎样取到原值?

[i=s] 本帖最后由 5i365 于 2022-5-15 09:07 编辑 [/i]

[size=3]经常使用酷狗音乐客户端下载歌曲, 但是要手动去找, 有点麻烦, 我下载的歌曲一般都有指定的歌曲ID, [/size][size=3]所以就在网上搜索了一些资料, 找到了一个链接, 只要把链接改为歌曲ID, 然后用Invoke-RestMethod调用链接, 就能返回一些值[/size]
[size=3]但是这些值, 不是原样显示的, 很奇怪, 还能找到mp3的链接, 但是下载也不行, 估计要恢复原样才行, 请求路过高手指教, 提前感谢[/size]
_______________________________________________________________________________________________________________________________________
[size=3]下面是代码执行后的返回值:[/size][size=3]红色字部分应该是歌曲名, 但是不知道是什么编码, [/size]
[size=3]蓝色和粉色字部分应该是下载链接, 但是里面也有特殊字符,也不能下载[/size]
[size=3]
<!--KG_TAG_RES_START-->{"trans_param":{"display":32,"display_rate":1},"fileHead":100,"q":0,"fileSize":3457047,"[color=#ff0000]fileName":"966EC8D9B7167DD8E0F1814CFDE47A18 - 139855960975104.fla[/color]","status":1,"url":["[color=#0000ff]http:\/\/fsandroid.ali.kugou.com\/202205082155\/3e8f6097954707264bf6ee80f4af9094\/G111\/M06\/1D\/10\/D4cBAFoL9VyASCmXADTAFw14uaI428.mp3[/color]","[color=#ff00ff]http:\/\/fs.mobile.kugou.com\/202205082155\/0fc031a3b4608c3af1421df7782b6673\/G111\/M06\/1D\/10\/D4cBAFoL9VyASCmXADTAFw14uaI428.mp3[/color]"],"extName":"mp3","bitRate":128000,"timeLength":216}<!--KG_TAG_RES_END-->[/size]
[size=3]
[/size][size=3]_______________________________________________________________________________________________________________________________________[/size]
[size=3]PS代码:[/size]
[size=3][code]$id=255787470
$uri = "http://trackercdnbj.kugou.com/i/v2/?album_audio_id=$id&behavior=play&cmd=25&album_id=6960309&hash=b5a2d566c9de70422f5e5e7203054219&userid=0&pid=2&version=9108&area_code=1&appid=1005&key=407732fc325852538ca836581fe4e370&pidversion=3001&with_res_tag=1"
$r = Invoke-RestMethod $uri
$r
[/code][/size]

5i365 发表于 2022-5-8 22:30

找了一个python代码的完整示例, 没找到powershell的
[url]https://blog.csdn.net/m0_45906885/article/details/120246623[/url]

flashercs 发表于 2022-5-9 14:08

[code]function Get-Song{
param(
[psobject]$id = 255787470,
[ValidateNotNullOrEmpty()]
[string]$outfile
)

$uri = "http://trackercdnbj.kugou.com/i/v2/?album_audio_id=$id&behavior=play&cmd=25&album_id=6960309&hash=b5a2d566c9de70422f5e5e7203054219&userid=0&pid=2&version=9108&area_code=1&appid=1005&key=407732fc325852538ca836581fe4e370&pidversion=3001&with_res_tag=1"
$r = Invoke-RestMethod -UseBasicParsing -Uri $uri -SessionVariable session1
$ojson = $r -replace '<!--.*?-->'|ConvertFrom-Json
foreach($itemurl in $ojson.url){
    Invoke-RestMethod -UseBasicParsing -Uri $itemurl -WebSession $session1 -OutFile $outfile
    if($?){break}
}
}[/code]

5i365 发表于 2022-5-9 15:27

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=255511&ptid=62671]3#[/url] [i]flashercs[/i] [/b]


   感谢大侠帮忙,
奇怪, 是同一id 但不是同一首歌, 应该是下面这首歌: 红色字是专辑ID, 蓝色字是歌曲ID, 我有这两个ID, 想下载这首歌
https://www.kugou.com/mixsong/48aevi9e.html#hash=A5D06A9BD3CC35FF866522F955C095C0&[color=#ff0000][b]album_id=37376237[/b][/color]&[color=#0000ff][b]album_audio_id=255787470[/b][/color]

5i365 发表于 2022-5-9 15:40

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=255511&ptid=62671]3#[/url] [i]flashercs[/i] [/b]

就像这个表中的两个ID, 我手动下载时, 是用客户端搜索专辑, 然后从专辑中找那个歌曲
   [table=98%]
        [tr]  [td=1,1,72]排序[/td]  [td=1,1,170]歌曲id[/td]  [td=1,1,72]语言[/td]  [td=1,1,150]歌手名[/td]  [td=1,1,238]歌曲名[/td]  [td=1,1,174]专辑id[/td]  [td=1,1,201]专辑名[/td] [/tr]
[tr]  [td]1[/td]  [td]255787470[/td]  [td]国语[/td]  [td]汪苏泷[/td]  [td]不分手的恋爱[/td]  [td]37376237[/td]  [td]汪苏泷原创合集[/td] [/tr]
[tr]  [td]2[/td]  [td]136049189[/td]  [td]国语[/td]  [td]小星星Aurora[/td]  [td]坠落星空[/td]  [td]16750196[/td]  [td]画一个星星一个你[/td] [/tr]
[tr]  [td]3[/td]  [td]246674878[/td]  [td]国语[/td]  [td]王茗[/td]  [td]大眠[/td]  [td]35936215[/td]  [td]大眠 (温柔男声)[/td] [/tr]
[/table]

idwma 发表于 2022-5-9 22:11

[i=s] 本帖最后由 idwma 于 2022-5-9 23:25 编辑 [/i]

[code]
$i=37376237
$d=255787470
$uri="http://mobilecdn.kugou.com/api/v3/album/song?version=9108&albumid=$i&plat=0&pagesize=100&area_code=1&page=1&with_res_tag=1"
$r = Invoke-RestMethod $uri
$r -match "{[^}]+hash.:.([^`"]+).+.$i."
$hash=$matches[1]
$uri="http://wwwapi.kugou.com/yy/index.php?r=play/getdata&hash=$hash&mid=123&album_id=$i&album_audio_id=$d"
$r = Invoke-RestMethod $uri
$uri=$r.data.play_url -replace 'https','http'
$n=$r.data.audio_name+'.mp3'
Invoke-RestMethod $uri -outfile $n
[/code]

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.