[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 5i365 于 2022-5-15 09:07 编辑

经常使用酷狗音乐客户端下载歌曲, 但是要手动去找, 有点麻烦, 我下载的歌曲一般都有指定的歌曲ID, 所以就在网上搜索了一些资料, 找到了一个链接, 只要把链接改为歌曲ID, 然后用Invoke-RestMethod调用链接, 就能返回一些值
但是这些值, 不是原样显示的, 很奇怪, 还能找到mp3的链接, 但是下载也不行, 估计要恢复原样才行, 请求路过高手指教, 提前感谢
_______________________________________________________________________________________________________________________________________
下面是代码执行后的返回值:红色字部分应该是歌曲名, 但是不知道是什么编码,
蓝色和粉色字部分应该是下载链接, 但是里面也有特殊字符,也不能下载

<!--KG_TAG_RES_START-->{"trans_param":{"display":32,"display_rate":1},"fileHead":100,"q":0,"fileSize":3457047,"fileName":"966EC8D9B7167DD8E0F1814CFDE47A18 - 139855960975104.fla","status":1,"url":["http:\/\/fsandroid.ali.kugou.com\/202205082155\/3e8f6097954707264bf6ee80f4af9094\/G111\/M06\/1D\/10\/D4cBAFoL9VyASCmXADTAFw14uaI428.mp3","http:\/\/fs.mobile.kugou.com\/202205082155\/0fc031a3b4608c3af1421df7782b6673\/G111\/M06\/1D\/10\/D4cBAFoL9VyASCmXADTAFw14uaI428.mp3"],"extName":"mp3","bitRate":128000,"timeLength":216}<!--KG_TAG_RES_END-->


_______________________________________________________________________________________________________________________________________
PS代码:
  1. $id=255787470
  2. $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"
  3. $r = Invoke-RestMethod $uri
  4. $r
复制代码
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

本帖最后由 idwma 于 2022-5-9 23:25 编辑
  1. $i=37376237
  2. $d=255787470
  3. $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"
  4. $r = Invoke-RestMethod $uri
  5. $r -match "{[^}]+hash.:.([^`"]+).+.$i."
  6. $hash=$matches[1]
  7. $uri="http://wwwapi.kugou.com/yy/index.php?r=play/getdata&hash=$hash&mid=123&album_id=$i&album_audio_id=$d"
  8. $r = Invoke-RestMethod $uri
  9. $uri=$r.data.play_url -replace 'https','http'
  10. $n=$r.data.audio_name+'.mp3'
  11. Invoke-RestMethod $uri -outfile $n
复制代码

TOP

回复 3# flashercs

就像这个表中的两个ID, 我手动下载时, 是用客户端搜索专辑, 然后从专辑中找那个歌曲
   
排序歌曲id语言歌手名歌曲名专辑id专辑名
1255787470国语汪苏泷不分手的恋爱37376237汪苏泷原创合集
2136049189国语小星星Aurora坠落星空16750196画一个星星一个你
3246674878国语王茗大眠35936215大眠 (温柔男声)
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复 3# flashercs


   感谢大侠帮忙,
奇怪, 是同一id 但不是同一首歌, 应该是下面这首歌: 红色字是专辑ID, 蓝色字是歌曲ID, 我有这两个ID, 想下载这首歌
https://www.kugou.com/mixsong/48aevi9e.html#hash=A5D06A9BD3CC35FF866522F955C095C0&album_id=37376237&album_audio_id=255787470
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

  1. function Get-Song{
  2. param(
  3. [psobject]$id = 255787470,
  4. [ValidateNotNullOrEmpty()]
  5. [string]$outfile
  6. )
  7. $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"
  8. $r = Invoke-RestMethod -UseBasicParsing -Uri $uri -SessionVariable session1
  9. $ojson = $r -replace '<!--.*?-->'|ConvertFrom-Json
  10. foreach($itemurl in $ojson.url){
  11.     Invoke-RestMethod -UseBasicParsing -Uri $itemurl -WebSession $session1 -OutFile $outfile
  12.     if($?){break}
  13. }
  14. }
复制代码
微信:flashercs
QQ:49908356

TOP

找了一个python代码的完整示例, 没找到powershell的
https://blog.csdn.net/m0_45906885/article/details/120246623
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

返回列表