VPS参考测评推荐
专注分享VPS主机优惠信息
衡天云优惠活动
华纳云优惠活动
荫云优惠活动

使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。

主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情!
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作

2020506谢谢大家的评论,世纪互联更新一期。21世纪互联需要一个特殊的链接来获取refresh_token。更新如下。

这也是突然想到的。最近,hk服务器过期了,所以我需要迁移我以前构建的olaindex和pyone。但现实并没有那么美好,我没有闲置的服务器可以用,也不想买新的服务器,因为很多事情难免会带来厄运。既花了钱,又没能提升技能。所以我想知道有没有免费的方法。

其实还有工具Heroku部署onelist。但是我记得有了cf,就可以部署Google的网盘列表程序goindex了。虽然cf已经破了,但是cf没有速度去建立goindex。而onedrive在国内是可以直接访问的,所以不经过CF应该可以保证一定的速度,那么cf可以部署onedrive的list程序吗?带着一个想法,我马上去百度和google,终于找到了一个程序FODI,支持部署云功能。

FODI( Fast OneDrive Index)接近第二速度榜;指定显示路径;特定文件夹加密;无需免费部署服务器;基础文字、图片、音视频和办公三件套预览;FODI程序的开源地址如下:

https://github.com/vcheckzen/FODI

但是官网不知何故,作者没有维护。无法看到部署步骤。不过还好vircloud写了教程,基本步骤已经陈述完毕。所以,我参考大禹的教程来造这个轮子。

I .获取refresh_token的国际版本并访问以下网站:

https://service-36 wiv xsc-1256127833 . AP-hong kong . API gateway . myq cloud . com/release/SCF _ one drive _ filelistor

单击获取refresh_token并使用您的office365帐户登录。

如果你是21世纪互联(onedrive国内版)(如同济大学),请访问以下链接:

https://service-gz S9 xkdm-1256127833 . AP-hong kong . API gateway . myq cloud . com/release/one drive-token-cn

使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。-主机参考登录后,你发现你又回到了原来的界面。然后你需要把链接放在地址栏里

.../?授权_代码& amp代码=...是

.../authorization_code?代码=...再次拜访。修改后如下。

使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。-主机参考复制返回的refresh_token并存储它。

使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。-主机参考 2.cloudflare后台操作1。进入cf workers后台,选择New worker。

使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。-主机参考2.将以下代码复制到worker编辑器中。

/** * IS_CN:如果是世纪互联的版本,请将0改为1 * EXPOSE_PATH:曝光路径;如果完全显示,请留空;否则以“/media/music”的格式填写* one drive _ refresh token:refresh _ token */consis _ cn = 0;const EXPOSE _ PATH = " " const one drive _ refresh token = " "异步函数handle request(request){ let request PATH let query splited let query string = request . URL . split('?' ')[1]if(query string){ query splited = query string . split(' = ')} if(query splited & amp;& ampquerySplited & # 910]= = = ' file '){ const file = query splited & # 91;1] const fileName = file.split('/')。pop();request path = file . replace('/'+fileName,' ')const URL = await fetch files(request path,fileName)return response . redirect(URL,302)} else { const { headers } = request const content type = headers . get(' content-type ')let body = { } if(content type & amp;& ampcontent type . includes(' form '){ const formData = await request . formData()for(let entry of formData . entries()){ body & # 91;入口& # 91;0]]= entry & # 91;1] } } requestPath = body?正文& # 91;?路径“]:”;const files = await fetch files(request path,null,body . passwd);返回新的响应(文件,{ headers:{ ' content-type ':' application/JSON;charset=utf-8 ',' Access-Control-Allow-Origin ':' * ' } } } addevent listener(' fetch ',event = > { return event . respond with(handle request(event . request))})const clientId = & # 91;4 da 3e 7f bf6d-467 c-AAF 0-578078 f 0bf 7 c ',' 04c 3c A0 b-8d 047785ad-98b 037d 25631 ']const client secret = & # 91;7/+ykq 2 xkfx:. dwjacuirojiaawl 0 qi 6 ',' h8 @ B7 kfvomj 小编8 hkbwentgl @ pU/z4yLB ']const oauthHost = & # 91;' https://log in . Microsoft online . com ',' https://log in . partner . Microsoft online . cn ']const API host = & # 91;https://graph.microsoft.com ',' https://Microsoft graph . chinacloudapi . cn ']const OAUTH = { ' redirectUri ':' https://scfonedrive . github . io ',' refresh token ':one drive _ refresh token,' clientId ':clientId & # 91;IS_CN],' client secret ':client secret & # 91;IS_CN],' oauthUrl ':oauthHost & # 91;IS_CN] + '/common/oauth2/v2.0/',' API URL ':API host & # 91;IS_CN] + '/v1.0/me/drive/root ',' scope ':API host & # 91;IS_CN] + '/Files。ReadWrite . All offline _ access ' }异步函数gathereresponse(response){ const { headers } = response const content type = headers . get(' content-type ')if(content type . includes(' application/JSON '){ return await response . JSON()} else if(content type . includes(' application/text '){ return await response . text()} else(content type . includes(' text/html '){ return await response . text()} }异步函数getContent(url) { constfor(const key in data){ if(data . hasownproperty(key)){ formdata . append(key,data & # 91key])} } const request options = { method:' POST ',body:formdata };const response = await fetch(url,request options)const result = await gathereresponse(response)return result }异步函数fetchAccessToken(){ URL = OAUTH & # 91;oauthUrl ']+' token ' data = { ' client _ id ':OAUTH & # 91;clientId'],' client _ secret ':OAUTH & # 91;clientSecret'],' grant_type': 'refresh_token ',' requested _ token _ use ':' on _ represent _ of ',' refresh _ token ':OAUTH & # 91;refresh token ']} const result = await fetch formdata(URL,data)return result . access _ token }异步函数fetchFiles(path,fileName,passwd) { if(!PATH | | PATH = = = '/'){ if(EXPOSE _ PATH = = = ' '){ PATH = ' ' } else { PATH = ':'+EXPOSE _ PATH } } else { if(EXPOSE _ PATH = = ' '){ PATH = ':'+PATH } else { PATH = ':'+EXPOSE _ PATH+PATH } } const access token = await fetchaccessstoken()const uri = oauth . API URL+encode uri(PATH)+'?expand=children(select=name,size,parentReference,lastModifiedDateTime,@ Microsoft . graph . downloadurl)' const body = await getContentWithHeaders(uri,{ Authorization:' Bearer '+access token })if(fileName){ let this file = null body . children . foreach(file = > { if(file . name = = = decodeURIComponent(fileName)){ this file = file & # 91;@ Microsoft . graph . download URL ']return } })return this file } else { let files = & # 91;]let encrypted = false for(let I = 0;我& ltbody . children . length;i++){ const file = body . children & # 91;i] if (file.name === '。password '){ const PASSWD = await get content(file & # 91;@ Microsoft . graph . download URL '])if(PASSWD!= = passwd){ encrypted = true;break } else { continue } } files . push({ name:file . name,size: file.size,time: file.lastModifiedDateTime,URL:file & # 91;@ Microsoft . graph . download URL ']})} let parent if(body . children . length){ parent = body . children & # 91;0]. parent reference . path } else { parent = body . parent reference . path } parent = parent . split(':')。pop()。replace(EXPOSE_PATH,' ')| | '/' parent = decodeURIComponent(parent)if(encrypted){ return JSON . stringify({ parent:parent,files:& # 91;],encrypted:true })} else { return JSON。stringify ({parent: parent,files}})代码是程序根目录下back-end-cf文件夹中index.js(链接是文件Github地址)中的内容。然后修改保存在指定位置的refresh_token。至于是不是世纪互联,想显示哪个目录,请根据节目评论修改。

使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。-主机参考保存构建

使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。-主机参考然后界面如下

使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。-主机参考然后返回主界面。

使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。-主机参考你可以改你觉得更好的名字,也可以不改。记住这个域名。

第三,部署程序首页把启动页面(位于前端文件夹的index.html)(文件链接的Github地址)部署到你的服务器上,当然也可以部署到Github页面上,可操作性太强,不再赘述。然后您需要修改文件中的SCF_GATEWAY。

使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。-主机参考将https添加到此处的地址。

然后只要访问这个文件,你就可以看到这个页面。这个页面真的很简洁,哈哈哈。出乎意料的简单。打开它需要几秒钟,然后内容就会显示出来。

使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。-主机参考几点说明:(来自vircloud.net)

支持加密,在要加密的文件夹中添加一个. password文件,编码为UTF8NoBOM,内容为password。后端其实是返回json的,所以前端其实可以自己做一个。用于内容传输的地址是OneDrive的官方地址,所以速度还是有保证的;Worker部署后,GET无法访问,会提示“错误1101 Worker抛出异常”,忽略;

这几篇文章你可能也喜欢:

  • 暂无相关推荐文章

本文由主机参考刊发,转载请注明:使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。 https://zhujicankao.com/111714.html

【腾讯云】领8888元采购礼包,抢爆款云服务器 每月 9元起,个人开发者加享折上折!
打赏
转载请注明原文链接:主机参考 » 使用CloudFlare Workers零成本部署OneDrive文件列表程序FODI(快速OneDrive索引)。
主机参考仅做资料收集,不对商家任何信息及交易做信用担保,购买前请注意风险,有交易纠纷请自行解决!请查阅:特别声明

评论 抢沙发

评论前必须登录!