老爸特别喜欢唱歌,过年回家的时候,经常见他拿手机录歌,一个人唱的很high。前几天跟我说,想把在全民k歌发布的歌曲全部下载到本地,但是软件里找不到下载的入口。我登进他的账号,发现已经录了六七百首歌了....
当即从网上搜索下载方法。下载原理都一样,在浏览器打开歌曲播放页面,然后找到页面中的音频地址就可以下载了。
首先登入网页版的全民k歌,扫码登入之后,首页只显示了8首歌,点击下面的“显示更多”居然点不开,以为是浏览器问题,换其他浏览器,换其他电脑都是一样....看来腾讯就是故意的(或者是技术bug)。
然后尝试下载PC版的全民k歌,发现PC版可以显示自己发布的所有歌曲,通过点击“ 分享 ”可以获取当前歌曲的网址。接下来的步骤就一气呵成了。
- 复制歌曲页面网址,打开Chrome浏览器,打开页面(推荐使用Chrome,另外现在包括IE、Edge等都集成了调试功能,使用这些浏览器也都可以完成下载)。
- 按F12(或者在页面上右键选择“调试模式”),之后依次找到并点击“NetWork”--“Media”(如下图)
- 如果你发现下面的列表是空白的,说明页面加载完后,你才打开的调试模式,这时按F5刷新网页,重新加载页面,就可以看到下图所示音频文件的列表了。(有时列表中可能会出现好几项,我一般选择文件Size最大的那个)
- 此时右键点击列表项,选择第一项在新窗口打开,就将文件可以下载到本地了。文件一般是m4a格式,可以直接在电脑播放。
我本想帮老爸把他的几百首歌下载下来,结果他坚持要自己下载,让我教他怎么下载。对于对电脑不算太熟悉的他来说,简直是一件太吃力的事情。我花了一个下午教给他下载步骤,对于这种多步的操作,加上Chrome调试模式里的英文界面,刚记住后面的步骤又把前面的几步忘记了。他自己操作一首歌的下载,可能要用五六分钟,几百首歌算下来,简直是个折磨。
忽然萌生了一个想法,用AHK写一些代码帮老爸自动下载好了。于是又用了大半天把程序写好、调试完成。
程序分为两部分,第一部分是使用快捷键Ctrl+1打开浏览器、打开调试模式、打开全民k歌软件。AHK代码如下。
^1::
run C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe, ,Max ;以最大化方式打开Chrome浏览器
sleep, 5000
WinWait, hao123 ;等待打开起始页
WinActivate
WinMaximize
sleep, 5000
send {F12} ;打开调试管理器
sleep, 3000
click, 1730, 120 ;点击NetWork
sleep, 1000
click, 1550, 210 ;点击Media
sleep, 500
run C:\Program Files (x86)\Tencent\WeSing\WeSing.exe ;打开全民k歌软件
return
代码的第二部分是在打开全民k歌每首歌的分享卡之后开始执行的,使用快捷键Ctrl+2可以自动复制歌曲链接、在浏览器打开网页、复制歌名、找到歌曲网址并下载。
在打开歌曲下载页面时还有一个特殊情况,点击右键选择新窗口打开后,可能会直接打开歌曲另存为的对话框,也可能会出现这首歌曲的播放面板,此时还需要点击“下载”才能打开对话框。因此代码里也增加了一个判断语句。
第二部分的AHK代码如下:
^2::
WinActivate ahk_exe WeSing.exe
sleep, 1000
click, 825,525 ;复制链接
click, 825,525 ;担心复制不成功,再复制一遍
sleep, 500
WinActivate ahk_exe chrome.exe ;切换到第一步打开的Chrome浏览器
sleep, 500
click, 1500,75 ;点击地址栏
send ^v
send {Enter} ;打开复制的网址
sleep, 6000 ;等待页面加载完毕
click, 1905,1020 ;关闭Chrome底部的下载条
sleep, 1000
click, 90,1000 ;太吵了,停止歌曲播放
sleep, 500
click, 80,290 3 ;三次点击选中歌名
sleep, 500
send ^c ;复制歌名
sleep, 2000
click, 1400,405 right ;音频地址点击右键
sleep, 1000
click, 1450,420 ;右键菜单选择第一项
sleep, 5000
CoordMode, Pixel, Screen ;相对于屏幕取坐标
PixelGetColor, color, 1700, 300, RGB ;判断打开的页面颜色
if (color=0x000000){ ;黑色页面-还需多一步点击下载
click, 810,635 ;停止音乐播放
sleep, 500
click, 1120,635 ;弹出下载
sleep, 500
click, 1000,630 ;点击下载
sleep, 3000
click, 560,60 ;点击下载地址栏
sleep, 1000
Send D:\desktop\ksong ;确保路径一致
sleep, 500
send {Space} ;输入法上屏
sleep, 500
send {Enter}
sleep, 1000
click, 900,470 ;点击文件名
sleep, 200
send ^v
sleep, 1000
send {Enter} ;保存回车
sleep, 1000
send ^w ;关掉弹出的窗口
sleep, 200
MsgBox, %ClipBoard%搞定!继续下一首!
}
else if (color=0xFFFFFF){ ;页面白色,直接下载
click, 560,60 ;点击下载地址栏
sleep, 1000
Send D:\desktop\ksong
sleep, 500
send {Space}
sleep, 500
send {Enter}
sleep, 1000
click, 900,470 ;点击文件名
sleep, 200
send ^v
sleep, 1000
send {Enter} ;保存回车
sleep, 1000
MsgBox, %ClipBoard%搞定!继续下一首!
}
else{
MsgBox, 出错了,快去找儿子解决!
}
return
这两部分代码可以放到同一个.ahk文件中,ahk文件加载后,第一步执行一次之后,就可以通过反复执行第二步连续下载歌曲了。需要注意的是,代码中click的坐标、程序路径、文件存储路径等,都要根据每个人的电脑自行测试修改。这里只是提供一个思路,上述代码仅供参考。
老爸说,有了这个,下载歌曲简直太方便了!