
OneDrive 是微软提供的云存储服务,它可以方便地存储和分享文件。然而,OneDrive 的文件分享链接默认是经过处理的,无法直接通过浏览器下载文件。写了一个单独的 HTML 文件,可以将 OneDrive 的文件分享链接转换为直接下载链接,实现文件的直接下载功能。而且,这个功能可以在本地双击直接运行,也可以通过将文件放到服务器上并通过域名访问。
该功能的实现原理非常简单,通过 Javascript 代码解析用户输入的 OneDrive 文件分享链接,提取关键信息,并根据提取的信息构造出直接下载链接。然后,将转换后的链接展示给用户,并提供复制功能,方便用户进行操作。
onedrive.html的文件。onedrive.html文件,它会在您默认的浏览器中打开。onedrive.html的文件。onedrive.html文件上传到您的服务器上,确保可以通过域名访问到该文件。http://yourdomain.com/onedrive.html,将会打开转换工具页面。使用以上方法,您可以在本地或通过服务器访问转换工具页面,方便地将 OneDrive 文件分享链接转换为直接下载链接。
希望这个简单的 OneDrive 转直连工具能够帮助您更方便地下载 OneDrive 中的文件!
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>OneDrive 直链转换工具</title> <style> body { font-family: Arial, sans-serif; margin: 0; padding: 0; } h1 { color: #333; } form { margin-bottom: 20px; } label { font-weight: bold; } input[type="text"], textarea { width: 100%; padding: 5px; margin-bottom: 10px; box-sizing: border-box; } input[type="button"], .copy-button, #copy-all-button { padding: 10px 20px; background-color: #4CAF50; color: #fff; border: none; cursor: pointer; } .result { margin-top: 20px; border: 1px solid #ccc; padding: 10px; background-color: #f9f9f9; } .error { color: #f00; } </style> </head> <body> <h1>OneDrive 直链转换工具</h1> <form> <label for="urls">请输入 OneDrive 单文件分享链接(每行一个):</label><br> <textarea id="urls" rows="5" cols="50" required></textarea><br> <input type="button" value="转换" Onclick="convertAndCopy()"> </form> <script> // 在页面加载时设置输入框的提示文本 window.Onload= function () { var textarea = document.getElementById("urls"); textarea.placeholder = "支持格式:\n 个人版 onedrive: https://1drv.ms/i/s!AnDZHOpvo15********5Wo\n 企业版 onedrive: https://jkwl-my.sharepoint.com/:i:/g/personal/admin_***_com/EcqpkSG0KsFFgQ******KhgBICI_se3pMm***MPQ-0Q?e=kxarnf"; }; // 其他代码... </script> <div id="results"></div> <button id="copy-all-button" Onclick="copyAllLinks()">复制全部</button> <script> function copyText(elementId) { var element = document.getElementById(elementId); var range = document.createRange(); range.selectNode(element); window.getSelection().removeAllRanges(); window.getSelection().addRange(range); document.execCommand("copy"); window.getSelection().removeAllRanges(); } function copyAllLinks() { var allLinks = document.querySelectorAll('.result span'); var allLinksText = []; allLinks.forEach(function (link) { allLinksText.push(link.textContent); }); var allLinksTextString = allLinksText.join('\n'); var tempTextarea = document.createElement('textarea'); tempTextarea.value = allLinksTextString; document.body.appendChild(tempTextarea); tempTextarea.select(); document.execCommand('copy'); document.body.removeChild(tempTextarea); alert('已复制全部链接到剪贴板!'); } function convertAndCopy() { var inputUrls = document.getElementById("urls").value; var urlList = inputUrls.split("\n"); var resultDiv = document.getElementById("results"); resultDiv.innerHTML = ""; var cOnvertedLinks= []; // 用于存储转换后的链接 urlList.forEach(function (url, index) { url = url.trim(); if (url !== "") { try { var cOnvertedLink= judgeLink(url); var resultElement = document.createElement("div"); resultElement.className = "result"; resultElement.innerHTML = '<p><strong>原始链接:</strong><br>' + url + '</p>' + '<p><strong>转换后链接:</strong><br><span id="result-link-' + index + '">' + convertedLink + '</span> <button class="copy-button" Onclick="copyText(\'result-link-' + index + '\')">复制</button></p>'; resultDiv.appendChild(resultElement); convertedLinks.push(convertedLink); // 添加到转换后的链接数组 } catch (e) { var errorElement = document.createElement("p"); errorElement.className = "error"; errorElement.textCOntent= "请检查链接是否正确?"; resultDiv.appendChild(errorElement); } } }); // 自动复制转换后的链接 if (convertedLinks.length > 0) { var cOnvertedLinksText= convertedLinks.join('\n'); var tempTextarea = document.createElement('textarea'); tempTextarea.value = convertedLinksText; document.body.appendChild(tempTextarea); tempTextarea.select(); document.execCommand('copy'); document.body.removeChild(tempTextarea); alert('已自动复制全部转换后链接到剪贴板!'); } } function judgeLink(url) { if (url.startsWith("https://1drv.ms/")) { // 如果是 https://1drv.ms/ 链接,则加上 https://onw.cc/1drv.ms.php?url= return "https://onw.cc/1drv.ms.php?url=" + url; } var reg1 = /https:\/\/.+sharepoint\.com/; var reg2 = /personal\/(\w+?)\//; var reg3 = /.*\/(\S+)/; var reg4 = /com\/:(\w):/; var matches1 = url.match(reg1); var matches2 = url.match(reg2); var matches3 = url.match(reg3); var p1 = matches1[0]; var p2 = matches2[1]; var p3 = matches3[1]; if (p3.includes('?')) { p3 = p3.split('?')[0]; } var matches4 = url.match(reg4); if (matches4[1] === 'f') { return "抱歉,你所输入链接分享的是文件夹,直链生成仅对单文件有效。"; } return p1 + '/personal/' + p2 + '/_layouts/52/download.aspx?share=' + p3; } </script> </body> </html> 1 aogg 2023-09-28 14:08:49 +08:00 写成暴力猴脚本啊 |
2 FlashEcho 2023-09-28 15:39:04 +08:00 好好好,太有用了 |
3 zliea 2023-09-28 16:57:58 +08:00 写成暴力猴脚本+1 |
5 MinonHeart 2023-10-09 12:52:28 +08:00 https://www.hub.moe/laboratory/onedrive-direct-link.html 分享下 Automator Application(macOS) 脚本 |
6 Leao9203 2024-03-17 01:08:22 +08:00 有用,200G+的分包终于有办法断点续传了 |
7 blufaux 179 天前 楼主,失效了吗??转换后,访问链接,提示如下: 无法提取 resid 和 authkey 。 |