网易云音乐api解析源码-Shell PHP 易语言

2017年12月30日

原创内容,转载请注明出处:http://www.myzhenai.com.cn/post/2928.html http://www.myzhenai.com/thread-18067-1-1.html
关键词:网易云音乐解析源码 网易云音乐api 网易云音乐解析shell 网易云音乐解析php 网易云音乐易语言
其实以前网易云音乐的公开api的接口现在升级了,用原有的api无法再正常读取到网易云音乐的歌曲链接了,现在必须要使用新的加密算法来计算网易云音乐的歌曲链接,但是我们还是可以通过改变思路来使用现有的api接口实现这些。我这里公布一下Shell下,PHP下和易语言下三种编程语言的写法,我也只会这三种。如果想要学习网易云音乐的歌曲链接加密算法的话,大家可以参考油猴里的网易云高清或下载的那两个插件的源码。
SHELL源码

# !/bin/bash
. /etc/profile
############################################################################################################################################
#
# This is a lottery number automatic generation tool
# Autor: RucLinux
# Web: http://www.myzhenai.com.cn/ http://www.myzhenai.com/ http://www.haikou-china.com/ http://jiayu.mybabya.com/ http://www.0898-shop.com/
#  说明:转载引用请保留这段,谢谢
#
#############################################################################################################################################
pw="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

#http://music.163.com/#/song?id=310449
###########################################################################################################
function wangyi() {
id=$(echo "${1}" | awk -F "=" '{ print $2 }')
d=$(curl -s http://music.163.com/api/song/detail/"?id=${id}&ids=%5B${id}%5D&csrf_token=")
name=$(echo ${d} | awk -F "songs" '{ print $2 }' | awk -F "id" '{ print $1 }' | awk -F "\"name\":\"" '{ print $2 }' | awk -F "\",\"" '{ print $1 }')
auto=$(echo ${d} | awk -F "artists" '{ print $2 }' | awk -F "id" '{ print $1 }' | awk -F "\"name\":\"" '{ print $2 }' | awk -F "\",\"" '{ print $1 }')
ico=$(echo ${d} | awk -F "\"blurPicUrl\":\"" '{ print $2 }' | awk -F "\",\"" '{ print $1 }')
mp=$(echo "http://music.163.com/song/media/outer/url?id=${id}.mp3")
one="			{\n"
two="				title : "
three="				singer :"
four="				cover  :"
fives="				src    : "
six="			},\r"
echo -e "${one}${two}'${name}',\r${three}'${auto}',\r${four}'${ico}',\r${fives}'${mp}'\r${six}" >> ${pw}/in.log
wget -p ${pw} -O "${name}.mp3" "http://music.163.com/song/media/outer/url?id=${id}.mp3"
}
###########################################################################################################
wangyi ${1}

#pw 变量是获取当前用户所在目录
#function 是新建一个函数
#wangyi 是新建的函数
#id 这个变量是通过 $1 参数来获取当前用户输入的网页地址里的一段字符串,也就是歌曲的ID码
#d 这个变量是通过curl来读取网页信息
#name 这个变量是通过过滤返回的网页源码并获取歌曲标题这些关键词
#auto 这个变量是通过过滤返回的网页源码获取歌曲的演唱者
#ico 这个变量是通过过滤返回的网页源码获取歌曲唱片图片
#mp 这个变量是通过过滤返回的网页源码获取歌曲的链接地址
#one two three four fives six这几个变量是定义输出的格式的关键字
#in.log 这一行是将所有变量集中输出到一个文件里,以便其他方式调用
#wget 这一行是下载歌曲文件

PHP源码

function wangyi($id)
    /**
     * 网易云音乐地址解析
     * $id 这是歌曲链接变量
     * $url 这是获得的网页源码变量
     * $ql 这是歌单里的歌曲ID数组变量
     * $idc 这是歌曲信息数组变量
     * $mid 这是歌单里的歌曲ID
     * $urlid 这是获取的歌曲信息的网页链接
     * $durl 这是歌曲网页源码变量
     * $sname 这是歌曲名称变量
     * $aname 这是歌手名称变量
     * $picurl 这是专辑图片地址变量
     * $mpurl 这是音乐外链地址变量
     */
{
    $id = getid($id, "=");
    if (strstr($id, "163.com") == true || strstr($id, "126.net") == true) {
        if (strstr($id, "playlist")) {
            $url = file_get_contents($id);
            $ql = array();
            preg_match("\/song\?id=\d+", $url, $ql);
            $arrlength = count($ql);
            for ($x = 0; $x < $arrlength; $x++) {
                $mid = str_replace("/song?id=", "", $ql[$x]);
                $urlid = "http://music.163.com/api/song/detail/?id=$mid&ids=%5B$mid%5D&csrf_token=";
                $durl = file_get_contents($urlid);
                $sname = getmusiczid($durl, '{\"songs\":[{\"name\":\"', '\",\"id\"');
                $aname = getmusiczid($durl, '\"artists\":[{\"name\":\"', '\",\"id\"');
                $picurl = getmusiczid($durl, '\"picUrl\":\"', '\",\"img');
                $mpurl = getmusiczid($durl, '\"mp3Url\":\"', '\",\"hMusic');
                $muscz = array("歌曲名称" => $sname, "歌手名称" => $aname, "专辑图片" => $picurl, "歌曲地址" => $mpurl);
            }
        } else {
            $urlid = "http://music.163.com/api/song/detail/?id=$id&ids=%5B$id%5D&csrf_token=";
            $durl = file_get_contents($urlid);
            $sname = getmusiczid($durl, '{\"songs\":[{\"name\":\"', '\",\"id\"');
            $aname = getmusiczid($durl, '\"artists\":[{\"name\":\"', '\",\"id\"');
            $picurl = getmusiczid($durl, '\"picUrl\":\"', '\",\"img');
            #$mpurl = getmusiczid($durl, '\"mp3Url\":\"', '\",\"hMusic');
            $mpurl = "http://music.163.com/song/media/outer/url?id=".$mid.".mp3";
            $muscz = array("歌曲名称" => $sname, "歌手名称" => $aname, "专辑图片" => $picurl, "歌曲地址" => $mpurl);
        }
    }
    return $muscz;
}

易语言源码

.版本 2
.支持库 RegEx
.支持库 iconv

.子程序 网易, , , 网易163音乐
.参数 歌曲地址, 文本型
.局部变量 页面源码, 文本型
.局部变量 页面内容, 文本型
.局部变量 id, 文本型
.局部变量 lid, 搜索结果, , "0"
.局部变量 k, 整数型
.局部变量 f, 文本型
.局部变量 sname, 文本型
.局部变量 aname, 文本型
.局部变量 picurl, 文本型
.局部变量 mpurl, 文本型
.局部变量 zj, 正则表达式

id = getid (歌曲地址, “=”)
API下载 (歌曲地址, api_取特定目录 (17) + id + “.html”)
页面源码 = 到文本 (读入文件 (api_取特定目录 (17) + id + “.html”))
删除文件 (api_取特定目录 (17) + id + “.html”)
.如果 (寻找文本 (歌曲地址, “playlist”, , 假) ≠ -1)
    zj.创建 (“\/song\?id=\d+”, )
    lid = zj.搜索全部 (页面源码)
    .如果真 (取数组成员数 (lid) > 0)
        .计次循环首 (取数组成员数 (lid), k)
            处理事件 ()
            f = getid (lid [k].取匹配文本 (页面源码, ), “=”)
            API下载 (“http://music.163.com/api/song/detail/?id=” + f + “&ids=%5B” + f + “%5D&csrf_token=”, api_取特定目录 (17) + f + “.html”)
            页面内容 = 子文本替换 (到文本 (读入文件 (api_取特定目录 (17) + f + “.html”)), #引号, “”, , , 真)
            页面内容 = 到文本 (编码转换 (到字节集 (页面内容), #编码_UTF_8, #编码_GB2312, ))
            sname = Getmusicz (页面内容, “{songs:[{name:”, “id”)
            aname = Getmusicz (页面内容, “artists:[{name:”, “id”)
            picurl = Getmusicz (页面内容, “picUrl:”, “img”)
            ' mpurl = Getmusicz (页面内容, “mp3Url:”, “mp3”)
            mpurl = “http://music.163.com/song/media/outer/url?id=” + id + “.mp3”
            tow_编辑框.加入文本 (“歌曲名称:” + sname + #换行符 + “歌手名称:” + aname + #换行符 + “专辑图片:” + picurl + #换行符 + “外链地址:” + mpurl + “mp3” + #换行符 + #换行符)
            删除文件 (api_取特定目录 (17) + f + “.html”)
        .计次循环尾 ()
    .如果真结束

.否则
    API下载 (“http://music.163.com/api/song/detail/?id=” + id + “&ids=%5B” + id + “%5D&csrf_token=”, api_取特定目录 (17) + id + “.html”)
    页面内容 = 子文本替换 (到文本 (读入文件 (api_取特定目录 (17) + id + “.html”)), #引号, “”, , , 真)
    页面内容 = 到文本 (编码转换 (到字节集 (页面内容), #编码_UTF_8, #编码_GB2312, ))
    sname = Getmusicz (页面内容, “{songs:[{name:”, “,id”)
    aname = Getmusicz (页面内容, “artists:[{name:”, #引号 + “,id”)
    picurl = Getmusicz (页面内容, “picUrl:”, “,img”)
    ' mpurl = Getmusicz (页面内容, “mp3Url:”, “mp3”)
    mpurl = “http://music.163.com/song/media/outer/url?id=” + id + “.mp3”
    tow_编辑框.加入文本 (“歌曲名称:” + sname + #换行符 + “歌手名称:” + aname + #换行符 + “专辑图片:” + picurl + #换行符 + “外链地址:” + mpurl + “mp3” + #换行符 + #换行符)
    删除文件 (api_取特定目录 (17) + id + “.html”)
    two_标签.标题 = #autol + mpurl + “mp3” + #autos
    htmlplayer (mpurl + “mp3”)
.如果结束






sicnature ---------------------------------------------------------------------
Your current IP address is: 54.80.97.221
Your IP address location: 国
Your IP address country and region: 美国 美国
Your current browser is:
Your current system is:
Original content, please indicate the source:
同福客栈论坛 | 海南仙岛海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source http://www.myzhenai.com.cn/post/2928.html

没有评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注