直连拼接方法欢迎!我白天是个邮递员,晚上就是个有抱负的演员。这是我的网站。我住在天朝的帝都,有条叫做Jack的狗。
1、在有道云笔记分享文件之后,得到分享链接。
http://note.youdao.com/noteshare?id=9862400b661006b5cf5a512e5ad80d6d
2、取出链接中 id 值 9862400b661006b5cf5a512e5ad80d6d。
3、根据 id 值拼接链接:
http://note.youdao.com/yws/public/note/9862400b661006b5cf5a512e5ad80d6d?editorType=0&cstk=cGtjFpHb
拼接逻辑为:
http://note.youdao.com/yws/public/note/ {id值}?editorType=0&cstk=cGtjFpHb
4、访问拼接后的链接,得到一串 JSON 字符串。
{"p":"/WEBf82fd575bd63c60f98ba999f1c1279ad","ct":1475838565,"su":null,"pr":0,"au":null,"pv":1,"mt":1475838565,"sz":15581976,"domain":1,"tl":"shsn.mp4"}
5、获取 p 值,并去掉其中的/,拼接新的链接。
拼接逻辑为
http://note.youdao.com/yws/api/personal/file/{第 4 步得到的 p 的值}?method=download&inline=true&shareKey={第 1 步分享链接中的 id 值}
6、得到最终的直链地址:
http://note.youdao.com/yws/api/personal/file/WEBf82fd575bd63c60f98ba999f1c1279ad?method=download&inline=true&shareKey=9862400b661006b5cf5a512e5ad80d6d封装API接口源码
通过以上方法,我们可以轻松的封装成API接口的方式,以便以后更方便的使用。
<?php// 验证请求是否合法,防止恶意请求if ($_SERVER['REQUEST_METHOD'] !== 'GET') { http_response_code(400); echo json_encode(['error' => 'Invalid request method']); exit;}// 获取传入的链接参数if (!isset($_GET['url'])) { http_response_code(400); echo json_encode(['error' => 'Missing url parameter']); exit;}$url = $_GET['url'];$json = isset($_GET['json']) && $_GET['json'] == 'ture';// 获取跳转后的链接function getRedirectUrl($url) { $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_NOBODY => true, // 只获取响应头,不获取响应体 CURLOPT_HEADER => true, // 将响应头包含在输出中 CURLOPT_CONNECTTIMEOUT => 5, // 设置连接超时时间为5秒 CURLOPT_TIMEOUT => 10 // 设置请求超时时间为10秒 ]); curl_exec($curl); $redirectUrl = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL); curl_close($curl); return $redirectUrl;}$redirectUrl = getRedirectUrl($url);// 提取链接中的ID值$queryString = parse_url($redirectUrl, PHP_URL_QUERY);parse_str($queryString, $params);$id = isset($params['id']) ? $params['id'] : '';if (empty($id)) { http_response_code(400); echo json_encode(['error' => 'Invalid url parameter']); exit;}// 构建API请求链接$apiUrl = "http://note.youdao.com/yws/public/note/{$id}?editorType=0&cstk=cGtjFpHb";// 发送API请求$curl = curl_init($apiUrl);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);$res = curl_exec($curl);curl_close($curl);if (!$res) { http_response_code(500); echo json_encode(['error' => 'Failed to fetch API response']); exit;}// 解析API响应$resArr = json_decode($res, true);if (!$resArr || !isset($resArr['p'])) { // 打印API响应内容进行调试 var_dump($res); http_response_code(500); echo json_encode(['error' => 'Invalid API response']); exit;}// 提取p值$p = trim($resArr['p'], '/');// 构建下载链接$downUrl = "http://note.youdao.com/yws/api/personal/file/{$p}?method=download&inline=true&shareKey={$id}";// 返回下载链接if ($json) { echo json_encode(['downloadUrl' => $downUrl]);} else { echo $downUrl;}使用方法:
1、上传至服务器
2、访问文件的地址即可使用
你的网址/ydy.php/?url=有道云笔记文件分享链接&json=true
Type参数详解
url:有道云笔记文件分享地址(支持短链接)
json:非必须,是否返回 json 格式
