小米主题商店地址:http://zhuti.xiaomi.com/
上面有灰常多的主题,虽然说下载下来也不能直接安装,但是里面的很多资源还是非常不错的,小米官方并没有提供直接下载的地址,下面说一下如何解析
访问一个主题链接,地址如下
http://zhuti.xiaomi.com/detail/6c112791-5607-4242-b1a1-a2d6ca804544
这个地址detail后面的一串文本就是主题唯一标识,6c112791-5607-4242-b1a1-a2d6ca804544
GET访问如下的地址即可获取json数据
http://thm.market.xiaomi.com/thm/download/v2/6c112791-5607-4242-b1a1-a2d6ca804544
其中的6c112791-5607-4242-b1a1-a2d6ca804544也就是要下载主题的唯一标识,访问地址会返回一个json数据
{
"apiCode": 0,
"apiData": {
"downloadUrl": "http://f1.market.xiaomi.com/download/ThemeMarket/09863840ef64c4d02209a5929d55d2bec9f82a6ee/åè跳跳é¹æºè´¢-1.0.0.0.mtz",
"fileHash": "ed824ae8a458c0fabf796a7c0e7027b3c2e3cb67",
"fileSize": 28708717
}
}
例子编写
数据已经很明白了,downloadUrl后的数据就是真实下载地址,那么下面使用代码编写一个小小的例子
PHP+Jquery
由于小米服务器返回是json非jsonp,所以不能使用ajax直接跨域请求,那么就需要结合PHP实现跨域请求数据了
首先创建一个PHP文件,作为访问请求,代码如下
<?php
if(isset($_GET['id']))
{
$url="http://thm.market.xiaomi.com/thm/download/v2/".$_GET['id'];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
}
?>
接着创建用户界面和响应代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script type="text/javascript" src="js/jquery-3.2.1.min.js" ></script>
<title></title>
</head>
<body>
请输入下载地址<input type="text" id="url" style="width: 50%" />
<button id="go">解析</button>
<div id="downurl">点击解析后这儿会显示下载地址</div>
</body>
<script>
$('#go').click(function(){
var value=$("#url").val();
value=value.substring(31);
$.getJSON("d.php",{id:value}, function(result){
$("#downurl").html('<a href="'+result.apiData.downloadUrl+'">点击下载</a>');});
});
</script>
</html>
jquery请自行引入,点击按钮后响应事件,获取图中文本框的值,然后进行文本截取,截取完成后使用jquery发送给php进行处理,接着将PHP返回的json解析,并且改变网页源码中的div,生成下载地址
代码效果