辅助岛

 找回密码
 点我注册
查看: 9.9K|回复: 34

[源码] 易语言音乐免费下载源码 官方接口!!!!

[复制链接]
       
楼主 发表于 2019-10-3 15:45:52 | 显示全部楼层 |阅读模式
[163music]1_1_1390951293_DINOSAUR(Cover:AKMU.)[/163music]
[ecode=6].版本 2
.支持库 downlib
.支持库 iext
.支持库 spec
.支持库 shell

.程序集 窗口程序集_启动窗口
.程序集变量 任务, 任务参数
.程序集变量 下载限速, 整数型
.程序集变量 下载对象, 下载对象

.子程序 _按钮1_被单击

.如果 (寻找文本 (编辑框1.内容, “play”, , 假) = -1)
    歌曲搜索 ()
.否则
    歌单列表 ()
.如果结束


.子程序 歌曲搜索
.局部变量 标题转码, 文本型
.局部变量 歌曲列表, 文本型
.局部变量 josn, 类_json
.局部变量 i, 整数型
.局部变量 音乐标题, 文本型
.局部变量 歌手, 文本型
.局部变量 专辑, 文本型
.局部变量 文件名, 文本型
.局部变量 索引, 整数型
.局部变量 发行时间, 文本型
.局部变量 链接, 文本型
.局部变量 o, 整数型

超级列表框1.全部删除 ()
标题转码 = 编码_URL编码 (编辑框1.内容, , 真)
.计次循环首 (2, o)  ' 默认只搜索两页
    歌曲列表 = 编码_utf8到gb2312 (到文本 (网页_访问 (“https://c.y.qq.com/soso/fcgi-bin ... mp;flag_qc=0&p=” + 到文本 (0) + “&n=20&w=” + 标题转码)))
    歌曲列表 = 文本_取出中间文本 (歌曲列表, “callback(”, “})”)
    歌曲列表 = 歌曲列表 + “}”
    .如果真 (josn.解析 (歌曲列表))
        .计次循环首 (josn.成员数 (“data.song.list”), i)
            音乐标题 = josn.取通用属性 (“data.song.list[” + 到文本 (i - 1) + “].title”)
            歌手 = josn.取通用属性 (“data.song.list[” + 到文本 (i - 1) + “].singer[0].name”)
            专辑 = josn.取通用属性 (“data.song.list[” + 到文本 (i - 1) + “].album.name”)
            发行时间 = josn.取通用属性 (“data.song.list[” + 到文本 (i - 1) + “].time_public”)
            文件名 = josn.取通用属性 (“data.song.list[” + 到文本 (i - 1) + “].mid”)
            链接 = 编码_utf8到gb2312 (到文本 (网页_访问_对象 (“https://i.y.qq.com/v8/playsong.h ... q.song&songmid=” + 文件名 + “#webchat_redirect”, 0, , , , “User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like)”, , , , , , , , , , )))
            链接 = 文本_取出中间文本 (链接, #链接1, #链接2)
            调试输出 (链接)
            索引 = 超级列表框1.插入表项 (, , , , , )
            超级列表框1.置标题 (索引, 0, 到文本 (超级列表框1.取表项数 ()))
            超级列表框1.置标题 (索引, 1, 音乐标题)
            超级列表框1.置标题 (索引, 2, 歌手)
            超级列表框1.置标题 (索引, 3, 专辑)
            超级列表框1.置标题 (索引, 4, 发行时间)
            超级列表框1.置标题 (索引, 5, 文件名)
            超级列表框1.置标题 (索引, 6, 链接)
        .计次循环尾 ()
    .如果真结束

.计次循环尾 ()



.子程序 歌单列表
.局部变量 id, 文本型
.局部变量 列表文本, 文本型
.局部变量 josn, 类_json
.局部变量 i, 整数型
.局部变量 音乐标题, 文本型
.局部变量 歌手, 文本型
.局部变量 专辑, 文本型
.局部变量 文件名, 文本型
.局部变量 链接, 文本型
.局部变量 索引, 整数型

超级列表框1.全部删除 ()
id = 文本_倒取出中间文本 (编辑框1.内容, “.html”, “/”)
列表文本 = 编码_utf8到gb2312 (到文本 (网页_访问 (“https://c.y.qq.com/qzone/fcg-bin ... song=0&disstid=” + id + “&format=jsonp&g_tk=5381&jsonpCallback=playlistinfoCallback&loginUin=0&hostUin=0&format=jsonp&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq&needNewCode=0”)))
列表文本 = 文本_取出中间文本 (列表文本, “playlistinfoCallback(”, “})”)
列表文本 = 列表文本 + “}”
.如果真 (josn.解析 (列表文本))
    .计次循环首 (josn.成员数 (“cdlist[0].songlist”), i)
        音乐标题 = josn.取通用属性 (“cdlist[0].songlist[” + 到文本 (i - 1) + “].songname”)
        歌手 = josn.取通用属性 (“cdlist[0].songlist[” + 到文本 (i - 1) + “].singer[0].name”)
        专辑 = josn.取通用属性 (“cdlist[0].songlist[” + 到文本 (i - 1) + “].albumname”)
        文件名 = josn.取通用属性 (“cdlist[0].songlist[” + 到文本 (i - 1) + “].songmid”)
        链接 = 编码_utf8到gb2312 (到文本 (网页_访问_对象 (“https://i.y.qq.com/v8/playsong.h ... q.song&songmid=” + 文件名 + “#webchat_redirect”, 0, , , , “User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like)”, , , , , , , , , , )))
        链接 = 文本_取出中间文本 (链接, #链接1, #链接2)
        索引 = 超级列表框1.插入表项 (, , , , , )
        超级列表框1.置标题 (索引, 0, 到文本 (超级列表框1.取表项数 ()))
        超级列表框1.置标题 (索引, 1, 音乐标题)
        超级列表框1.置标题 (索引, 2, 歌手)
        超级列表框1.置标题 (索引, 3, 专辑)
        超级列表框1.置标题 (索引, 5, 文件名)
        超级列表框1.置标题 (索引, 6, 链接)
    .计次循环尾 ()
.如果真结束
状态条1.置文本 (0, “状态:搜索完成”)

.子程序 _ape无损品质_被选择
.局部变量 ape品质, 文本型
.局部变量 文件大小, 整数型

ape品质 = 超级列表框1.取标题 (超级列表框1.现行选中项, 6)
ape品质 = 文本_替换 (ape品质, , , , “/C400”, “/A000”, “.m4a?”, “.ape?”, “fromtag=38”, “fromtag=8”, “http://dl.stream.qqmusic.qq.com/”, “http://streamoc.music.tc.qq.com/”)
文件大小 = 网页_取网络文件尺寸 (ape品质)
.如果 (文件大小 < 1000000)
    信息框 (“没有ape格式,请换其他格式!”, 0, , )
.否则
    下载 (ape品质, 超级列表框1.取标题 (超级列表框1.现行选中项, 1), “.ape”, 超级列表框1.取标题 (超级列表框1.现行选中项, 2))
.如果结束


.子程序 _flac无损品质_被选择
.局部变量 flac品质, 文本型
.局部变量 文件大小, 整数型

flac品质 = 超级列表框1.取标题 (超级列表框1.现行选中项, 6)
flac品质 = 文本_替换 (flac品质, , , , “/C400”, “/F000”, “.m4a?”, “.flac?”, “fromtag=38”, “fromtag=53”)

文件大小 = 网页_取网络文件尺寸 (flac品质)
.如果 (文件大小 < 1000000)
    信息框 (“没有flac格式,请换其他格式!”, 0, , )
.否则
    下载 (flac品质, 超级列表框1.取标题 (超级列表框1.现行选中项, 1), “.flac”, 超级列表框1.取标题 (超级列表框1.现行选中项, 2))
.如果结束


.子程序 _mp3高品质_被选择
.局部变量 mp3高品质链接, 文本型
.局部变量 文件大小, 整数型

mp3高品质链接 = 超级列表框1.取标题 (超级列表框1.现行选中项, 6)
mp3高品质链接 = 文本_替换 (mp3高品质链接, , , , “/C400”, “/M800”, “.m4a?”, “.mp3?”, “fromtag=38”, “fromtag=53”)
文件大小 = 网页_取网络文件尺寸 (mp3高品质链接)
.如果 (文件大小 < 1000000)
    信息框 (“没有mp3高品质格式,请换其他格式!”, 0, , )
.否则
    下载 (mp3高品质链接, 超级列表框1.取标题 (超级列表框1.现行选中项, 1), “.mp3”, 超级列表框1.取标题 (超级列表框1.现行选中项, 2))
.如果结束


.子程序 _mp3普通品质_被选择
.局部变量 mp3普通品质链接, 文本型

mp3普通品质链接 = 超级列表框1.取标题 (超级列表框1.现行选中项, 6)
mp3普通品质链接 = 文本_替换 (mp3普通品质链接, , , , “/C400”, “/M500”, “.m4a?”, “.mp3?”, “fromtag=38”, “fromtag=53”)
下载 (mp3普通品质链接, 超级列表框1.取标题 (超级列表框1.现行选中项, 1), “.mp3”, 超级列表框1.取标题 (超级列表框1.现行选中项, 2))

.子程序 _编辑框1_被双击, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型

编辑框1.内容 = “”

.子程序 _超级列表框1_右键单击表项, , , '弹出菜单

弹出菜单 (菜单, , )


.子程序 下载
.参数 下载地址, 文本型
.参数 音乐标题, 文本型
.参数 音乐格式, 文本型
.参数 歌手, 文本型
.局部变量 保存路径, 文本型

任务.类型 = 4096
任务.文件地址 = 下载地址
保存路径 = 读配置项 (取运行目录 () + “\bc.ini”, “保存目录”, “保存”, )
.如果 (文件是否存在 (取运行目录 () + “\bc.ini”) = 假)
    信息框 (“请先设置保存目录”, 0, , )
    返回 ()

.否则
    任务.本地文件路径 = 保存路径 + 歌手 + “ - ” + 音乐标题 + 音乐格式
    任务.默认线程数 = 5
    下载对象.增加新任务 (任务)
    时钟1.时钟周期 = 1000
.如果结束


.子程序 _时钟1_周期事件

' 状态条1.置文本 (1, “下载速度:” + 到文本 (取整 (取总下载速度 () ÷ 1024)) + “ s\kb”)
状态条1.置文本 (1, “下载速度:” + 到文本 (四舍五入 (取总下载速度 () ÷ 1024000, 2)) + “ MB/s”)
.如果 (状态条1.取文本 (1) = “下载速度:0 MB/s”)
    时钟1.时钟周期 = 1000000000
    状态条1.置文本 (2, 超级列表框1.取标题 (超级列表框1.现行选中项, 1) + “ - ” + 超级列表框1.取标题 (超级列表框1.现行选中项, 2) + “  下载完成”)
    播放音乐 (#声音1, 假)
.否则

.如果结束


.子程序 _标签1_鼠标左键被按下, 逻辑型
.参数 横向位置, 整数型
.参数 纵向位置, 整数型
.参数 功能键状态, 整数型
.局部变量 路径, 文本型

路径 = 浏览文件夹 (“选择保存目录”, 假) + “\”
写配置项 (取运行目录 () + “\bc.ini”, “保存目录”, “保存”, 路径)

.子程序 _编辑框1_按下某键, 逻辑型
.参数 键代码, 整数型
.参数 功能键状态, 整数型

.如果 (键代码 = #回车键)
    _按钮1_被单击 ()
.否则
游客,如果您要查看本帖隐藏内容请回复



.如果结束


.子程序 __启动窗口_创建完毕
-------------------------------------常量表----------------------------------
.版本 2

.常量 链接1, "<文本长度: 9>"
.常量 链接2, "<文本长度: 2>"
游客,如果您要查看本帖隐藏内容请回复



发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

       
楼主 发表于 2019-10-3 15:46:29 | 显示全部楼层
确实是难得好帖啊,顶先

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-3 20:44:09 | 显示全部楼层
下哈

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-4 00:25:18 | 显示全部楼层
我只是路过打酱油的

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-4 08:13:51 | 显示全部楼层
围观 围观 沙发在哪里!!!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-4 09:37:48 来自手机 | 显示全部楼层
撸过

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-4 15:01:23 来自手机 | 显示全部楼层
好帖必须得顶起

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-4 23:50:37 | 显示全部楼层

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-5 08:34:43 | 显示全部楼层
专业抢沙发的!哈哈

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-5 13:38:40 | 显示全部楼层
看起来好像不错的样子

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-5 16:45:00 来自手机 | 显示全部楼层
支持支持,感谢,正需要

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-5 21:18:44 | 显示全部楼层
有空一起交流一下

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-5 23:47:06 | 显示全部楼层
专业抢沙发的!哈哈

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-6 08:04:51 | 显示全部楼层
前排支持下了哦~

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

       
发表于 2019-10-6 08:21:13 | 显示全部楼层
撸过

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的吧友,一个好办法就是给对方加【好评】【仙豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 点我注册

本版积分规则

快速回复 收藏帖子 返回列表 搜索

Quick BI||论坛app|Archiver|手机版|小黑屋|辅助岛 |网站地图

GMT+8, 2024-11-22 08:03 , Processed in 0.457346 second(s), 212 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表