// ==UserScript== // @name aliyun_alist解析 // @namespace http://tampermonkey.net/ // @version 0.2.1 // @description 阿里云分享链接挂载alist // @author waitfortea // @match https://www.aliyundrive.com/s/* // @icon https://www.google.com/s2/favicons?sz=64&domain=aliyundrive.com // @grant unsafeWindow // @grant GM_xmlhttpRequest // ==/UserScript== (async function() { 'use strict'; let window_div=insertWindow() let button=insertTd(window_div) button.onclick=async function(e){ let authorization= await alist_login() let refresh_token=await get_refresh_token(authorization) let id=id_get() let text=document.querySelector('#aliyun_text') let mount_path='/aliyun/'+text.value let add_obj=set_add_obj(mount_path,refresh_token,id.share_id,id.folder_id) console.log(add_obj) add_aliyun_share(authorization,add_obj) } // Your code here... })(); function alist_login(){ return new Promise((resolve,reject)=>{ GM_xmlhttpRequest({ method:"post", url:"http://127.0.0.1:5244/api/auth/login", synchronous:true, headers:{ 'Content-Type':'application/json;charset=utf-8'}, data:JSON.stringify({ 'username':'用户名', // 'password':'密码', // 'otp_code':'' }), onload: function(res){ let authorization=JSON.parse(res.response).data.token console.log(authorization) let code=JSON.parse(res.response).message let result1_div=document.querySelector('#result1_div') result1_div.innerHTML='登陆状态:'+code resolve(authorization) } }) }) } function add_aliyun_share(authorization,add_obj){ GM_xmlhttpRequest({ method:"post", url:"http://127.0.0.1:5244/api/admin/storage/create", synchronous:true, headers:{ Authorization:authorization, 'Content-Type':'application/json;charset=utf-8' }, data:add_obj, onload: function(res){ let code=JSON.parse(res.response).message let result1_div=document.querySelector('#result2_div') result1_div.innerHTML='创建状态:'+code } }) } function id_get(){ console.log('开始输出') let share_url=location.href let share_id let folder_id if(share_url.match(/(?<=\/s\/).*\//)!=null){ share_id=share_url.match(/(?<=\/s\/).*?(?=\/)/)[0] folder_id=share_url.match(/(?<=\/folder\/).*/)[0] console.log('share_id:'+share_id+" folder_id:"+folder_id) }else{ share_id=share_url.match(/(?<=\/s\/).*/)[0] folder_id='root' console.log('share_id:'+share_id+" folder_id:无") } return { share_id:share_id, folder_id:folder_id } } function set_add_obj(mount_path,refresh_token,share_id,root_folder_id){ let add_obj={"mount_path":"","order":0,"remark":"","cache_expiration":30,"web_proxy":false,"webdav_policy":"302_redirect","down_proxy_url":"","extract_folder":"","driver":"AliyundriveShare","addition":"{\"refresh_token\":\"\",\"share_id\":\"\",\"share_pwd\":\"\",\"root_folder_id\":\"\",\"order_by\":\"\",\"order_direction\":\"\"}"} add_obj.mount_path=mount_path let addition_obj=JSON.parse(add_obj.addition) addition_obj.refresh_token=refresh_token addition_obj.share_id=share_id addition_obj.root_folder_id=root_folder_id add_obj.addition=JSON.stringify(addition_obj) return JSON.stringify(add_obj) } function get_refresh_token(authorization){ return new Promise((resolve,reject)=>{ GM_xmlhttpRequest({ method:"get", url:"http://127.0.0.1:5244/api/admin/storage/get?id=2", synchronous:true, headers:{ Authorization:authorization }, onload: function(res){ let refresh_token=JSON.parse(JSON.parse(res.response).data.addition).refresh_token console.log(refresh_token) resolve(refresh_token) } }) }) } function insertWindow(){ var window_div=document.createElement('div') console.log('创建面板') setBasicStyleWindow(window_div) setLayoutWindow(window_div) var body=document.querySelector('body') body.appendChild(window_div) return window_div } function insertTd(window_div){ let tr=document.createElement('tr') let td1=document.createElement('td') let td2=document.createElement('td') let text=document.createElement('input') text.type='text' text.id='aliyun_text' text.style.width='155px' let button=document.createElement('input') button.type='button' button.id='aliyun_button' button.width='40px' button.value='创建' let div1=document.createElement('div') div1.id='result1_div' let div2=document.createElement('div') div2.id='result2_div' tr.appendChild(td1) tr.appendChild(td2) td1.appendChild(text) td2.appendChild(button) window_div.appendChild(tr) window_div.appendChild(div1) window_div.appendChild(div2) return button } //设置窗口样式 function setBasicStyleWindow(window_div){ //设置背景 window_div.style.backgroundColor='rgba(255,255,3,0.28)' //设置宽高 window_div.style.height='110px' window_div.style.width='220px' //设置边框 window_div.style.border='1px solid skyblue' window_div.style. borderRadius='1px' } function setLayoutWindow (window_div){ //设置元素布局类型 window_div.style.display='block' //设置重叠显示顺序 window_div.style.zIndex='9999' //设置定位方式 window_div.style.position='fixed' //设置坐标 window_div.style.top='0px' window_div.style.left='50px' //设置溢出处理方式 window_div.style.overflowX='scroll' window_div.style.overflowY='scroll' }