AHK 快餐店 - AHK + 迅雷快车,轻松下载 QQ 音乐 1
刚刚调查了写博的朋友们,没有人用 QQ Music。意料之中。他们不用,不代表广大的 QQ 用户不用。相信很多用 QQ Music 的朋友不想浪费 RMB 去下载 QQ 音乐吧?下载音乐的办法何其多,为什么要下载 QQ 音乐?说难听点叫钻牛角尖,说好听点,叫另辟蹊径。本文仅仅出于学习 AHK 脚本的目的,来实现下载 QQ 音乐。

我们先来看看网上流传的办法是怎么做的,

1、找到 QQ 目录下的 qqmusicdata 文件夹里的以你的 QQ 命名的文件夹,找到 PlayList.Dat 用记事本打开。用记事本打开就可以看到真实的下载地址。[via] 这个文件已经不存在。

2、先清空 QQ 目录下的 qqmusicdata\Temp,然后在 QQ 音乐的界面上,点击“同步→上传列表”,这时候,qqmusicdata\Temp 会多出两个后缀名为 .tmp 的文件,用记事本打开就可以看到真实的下载地址。[via 《电脑爱好者》2007.24] 这两个文件会出现,不过是在“下载列表”的时候出现,而且一眨眼工夫,QQ 音乐就秒杀了它们。

从第二种办法来看,只要能在 QQ 音乐秒杀掉 .tmp 文件之前,复制出来不久 ok 了?哦也,我们先来看 AHK 代码:

#Persistent
settimer,copy,1
return
; 小提示,如果你看不懂这些代码请回头看看 AHK 快餐店系列文章。

copy:
FileCopy,D:\QQ\QQMusicData\Temp\UserList*.tmp, E:\桌面\temp, 1
; 请注意修改 QQ 的路径。后面的 E:\桌面\temp 是文件复制到哪里去。1,代表覆盖同名文件,反之就是 0。
IfExist E:\桌面\temp\UserList.tmp
; E:\桌面\temp\UserList.tmp 这个文件名可能是 UserList7.tmp 之类的。
{
    settimer,copy, off
    ; 关闭计时器
    Loop
    {
        FileReadLine, line, E:\桌面\temp\UserList.tmp, %A_Index%
        ; 读取文件的每一行,放到变量 line 里面
        if ErrorLevel
            break
        ; 如果找不到文件的话,跳出循环。
        RegExMatch(line, “http://(.*).wma”,URL)
        ; 利用正则表达式提取 line 中的地址。提取后的地址放在 URL 中。
        if (StrLen(URL)<>0)
            URLs=%URLs%%URL%`n
        ; 如果 URL 的长度不等于 0 ,说明找到地址了,加上一个回车(`n)并把 每一个 URL 合并到 URLs 里面
    }
    FileAppend , %URLs%, E:\桌面\temp\MusicURL.lst
    ; 把 URLs 的值写到 MusicURL.lst 里面
}
return

脚本下载:Box.net | Google Group

下面是详细的操作步骤:

1、打开 QQmusic,运行上面的脚本,随便删除掉一首歌,然后点击“同步→下载列表”。这时候 QQ music 会问:“下载列表会将服务器上的列表添加到本地列表,是否添加?”当然是选“是”,这时候又会有另外一个对话框,选择“合并”。

只要点击了“合并”,QQMusicData\Temp 立刻就会出现 UserList*.tmp 文件。我们的 AHK 可是以每秒 1000 次的速度检测 UserList*.tmp 文件是否存在,存在立刻复制出来。

2、运行迅雷或者快车,然后点击“文件→导入下载列表”。导入 AHK 生成的 E:\桌面\temp\MusicURL.lst 。剩下的不用多说。

3、打开千千静听,把下载到歌曲添加进去列表,选中刚刚添加的文件,右键“重命名文件→歌曲名 – 歌手.扩展名”。这样就可以把下载到的歌曲的名字由一堆数字重命名为直观的名字。

AHK 系列 | 上回 | 来自 appinn.com | 欢迎加入 AutoHotKey Google Group | 下回不定时推出