阿里网盘分享

阿里网盘说是2021年4月出分享功能,可这都4月中下旬了,也没个动静

好在网上找到一个油猴儿的阿里网盘分享扩展脚本

分享给大家

脚本安装地址:https://bbs.tampermonkey.net.cn/thread-280-1-1.html

启动该插件后

右键该文件,打开菜单>查看详情,会多出 生成分享和远程提取的按钮


这时候剪辑版就会自动出现一串神秘数字,把这串神秘数字发给同样拥有插件的人,对方导入即可以分享文件!

如果喜欢研究,可以看下脚本源代码

// ==UserScript==
// @name         【bbs.tampermonkey.net.cn】阿里云盘脚本V4.9-寒冬将至
// @namespace    http://bbs.tampermonkey.net.cn/
// @version      66.75
// @description  【bbs.tampermonkey.net.cn】李恒道
// @author       【bbs.tampermonkey.net.cn】李恒道
// @match        https://passport.aliyundrive.com/*
// @match        https://www.aliyundrive.com/drive/*
// @match        https://www.aliyundrive.com/drive
// @match        https://aliyundrive.com/drive/*
// @match        https://aliyundrive.com/drive
// @match        http://passport.aliyundrive.com/*
// @match        http://www.aliyundrive.com/drive/*
// @match        http://www.aliyundrive.com/drive
// @match        http://aliyundrive.com/drive/*
// @match        http://aliyundrive.com/drive
// @icon         https://www.google.com/s2/favicons?domain=aliyundrive.com
// @require      https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.js
// @require      https://cdn.bootcdn.net/ajax/libs/js-sha1/0.6.0/sha1.js
// @grant        unsafeWindow
// @grant        GM_setClipboard
// @grant        GM_xmlhttpRequest
// @connect      aliyundrive.com
// @connect      alicloudccp.com
// @run-at       document-start
// @supportURL   https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=427
// @homepage     https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=427
// @supportURL   https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=280
// @homepage     https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=280
// ==/UserScript==

let username=''
let password=''
//自动登陆配置项
let NewLink=true;
//使用新版链接
let FileList=[]
let Searchlist=[]
let CreateListner=false;
let GenerateFileInShow=false;
let parent_file_id='root'
let listurl=''
let CreateSaveBtn=false;
let Totallistnum=0;
let Sublistnum=0;
var ShowFileObj={
    name:'文件获取失败',
    content_hash:'hash获取失败',
    size:'公众号:叛逆青年旅舍,来自油猴中文网:bbs.tampermonkey.net.cn',
    content_type:'Fucccccck',
    file_id:'天才少年李恒道',
    content_type:'系统李恒道吹牛逼理论,QQ4548212'
}
let accesstoken=''
let filenum=0;
let next_markerlist=[]
let totalnum=0;
let Uploadlist=[]
let Success=0;
let Faile=0;
let GenerateDialogShow;//对话框1
let GenerateFileinDialogShow;//对话框2
let GenerateShow=false
let uploadsize=1000000
//他妈看不懂了,写的是啥
function GetFileSha1Encr(tempobj){
    if(NewLink==true)
    {
        let name=tempobj.name.replace('|','=')
        if(name==='')
        {
            name='nameisnull'
        }
        return 'aliyunpan://'+name+'|'+tempobj.content_hash.replace('|','=')+'|'+tempobj.size+'|'+tempobj.content_type.replace('|','=')
    }
    return window.btoa(unescape(encodeURIComponent(JSON.stringify({
        name:tempobj.name,
        content_hash:tempobj.content_hash,
        size:tempobj.size,
        content_type:tempobj.content_type,
    }))))
}
function CurrentText() {
    var d = new Date(),
        str = '';
    str += d.getFullYear() + '年';
    str += d.getMonth() + 1 + '月';
    str += d.getDate() + '日';
    str += d.getHours() + '时';
    str += d.getMinutes() + '分';
    str += d.getSeconds() + '秒';
    return str+'序列文件.txt';
}
async function CreateTextUpload(name,size,hash){
    return new Promise((resolve, reject) => {
        let useruid=JSON.parse(localStorage.getItem('token')).default_drive_id
        let uploadtext='{"drive_id":"'+useruid+'","part_info_list":[{"part_number":1}],"parent_file_id":"'+parent_file_id+'","name":"'+name+
            '","type":"file","check_name_mode":"auto_rename","size":'+size+',"content_hash":"'+hash+'","content_hash_name":"sha1"}'
        GM_xmlhttpRequest({
            url:"https://api.aliyundrive.com/v2/file/create",
            method :"POST",
            data:uploadtext,
            headers: {
                "Content-type": "application/json;charset=utf-8",
                "Authorization": accesstoken
            },
            onload:function(xhr){
                resolve(xhr.responseText);

            }
        });
    });
}

async function UploadTextBin(tageturl,targetdata){
    return new Promise((resolve, reject) => {


        GM_xmlhttpRequest({
            url:tageturl,
            method :"PUT",
            data:targetdata,
            headers: {
                "Content-type": " ",
                "Referer": "https://www.aliyundrive.com/",
                // "Authorization": accesstoken
            },
            //binary:true,
            onload:function(xhr){
                resolve(xhr.responseText);

            }
        });
    });
}

async function Complete(upload_id,file_id){
    return new Promise((resolve, reject) => {
        let useruid=JSON.parse(localStorage.getItem('token')).default_drive_id
        let uploadtext='{"drive_id":"'+useruid+'","upload_id":"'+upload_id+'","file_id":"'+file_id+'"}'
        GM_xmlhttpRequest({
            url:'https://api.aliyundrive.com/v2/file/complete',
            method :"POST",
            data:uploadtext,

            headers: {
                "Content-type": "application/json;charset=utf-8",
                "Authorization": accesstoken
            },
            onload:function(xhr){
                resolve(xhr.responseText);

            }
        });
    });
}
async function UploadTextToAliYunpan(text){
    var tempblob=new Blob([text])
    if(tempblob.size>uploadsize)
    {
        alert('文件超出脚本限制大小,无法上传至云盘!请选择导出文件')
        return;
    }
    let create=JSON.parse(await CreateTextUpload(CurrentText(),tempblob.size,sha1(text)))
    if(create.rapid_upload==true){
        alert('网盘内存在该文件!')
    }
    let createurl=create.part_info_list[0].upload_url
    await UploadTextBin(createurl,text)

    let finishret= await Complete(create.upload_id,create.file_id)
    if(finishret.indexOf('file_id')==-1)
    {
        alert('保存至网盘失败!')
    }
    finishret=JSON.parse(finishret)
    let sharurl=GetFileSha1Encr(finishret)
    alert('保存至网盘成功!,已设置到剪辑版')
    GM_setClipboard(sharurl)
    //file_id JSON.parse


    console.log('UploadTextToAliYunpan',finishret)
}
function GetDecrText(text){
    if(text.indexOf('115://')!==-1)
    {
        let sizelist=text.replace('115://','').split('|')
        if(sizelist.length<4)
        {
            return 'Error'
        }
        if(sizelist.length>4)
        {
            var n = parseInt(sizelist[1]);
            if (!isNaN(n))
            {
                return {content_hash:sizelist[2],content_type:'null',name:sizelist[0],size:sizelist[1]}
            }
            let temp=text
            let sizelength=text.replace('115://','').split('|').length-4
            for(let num=0;num<sizelength;num++)
            {
                temp=temp.replace('|','=')
            }
            sizelist=temp.replace('115://','').split('|')
        }


        return {content_hash:sizelist[2],content_type:'null',name:sizelist[0],size:sizelist[1]}
    }
    if(text.indexOf('aliyunpan::')!==-1)
    {
        let sizelist=text.replace('aliyunpan::','').split('|')
        if(sizelist.length!==4)
        {
            return 'Error'
        }
        return {content_hash:sizelist[1],content_type:sizelist[3],name:sizelist[0],size:sizelist[2]}
    }
    if(text.indexOf('aliyunpan://')!==-1)
    {
        let sizelist=text.replace('aliyunpan://','').split('|')
        if(sizelist.length!==4)
        {
            return 'Error'
        }
        return {content_hash:sizelist[1],content_type:sizelist[3],name:sizelist[0],size:sizelist[2]}
    }
    try
    {

        return JSON.parse(decodeURIComponent(escape(window.atob(text))))
    }
    catch(err)
    {

        return 'Error'
    }



}
function MulReadialogCreate(){
    if(GenerateShow===true)
    {
        GenerateShow=false;
        GenerateDialogShow.remove()
    }
    //导入文件
    if(GenerateFileInShow==true)
    {
        return;
    }
    GenerateFileInShow=true
    GenerateFileinDialogShow=document.createElement('div')
    unsafeWindow.ReadFileList=ReadFileList
    GenerateFileinDialogShow.innerHTML=`<div class="ant-modal-content" style="  500px;z-index: 99;position: absolute;top: 50px;left: calc(50% - 250px);"><div class="ant-modal-header"><input id="uploadfile" onchange="ReadFileList(this)" type="file"  style="display: none;"><div class="ant-modal-title" id="rcDialogTitle0"><div class="icon-wrapper--3dbbo" style="display: flex;align-items: center;justify-content: space-between;"><span>文件批量导入(请勿导入时关闭)</span>    <span data-role="icon" data-render-as="svg" data-icon-type="PDSClose" class="close-icon--33bP0 icon--d-ejA " style="    cursor: pointer;"><svg viewBox="0 0 1024 1024"><use xlink:href="#PDSClose"></use></svg></span></div></div></div><div class="ant-modal-body"><div class=""><div class="cover-wrapper--2UqQb" style="    flex-direction: column;    height: 100px;" data-spm-anchor-id="0.0.0.i6.54a06c75eRjwhJ"><div>多文件批量导出 公众号:<span style="    color: blue;">叛逆青年旅舍</span></div><div>作者<span style="    color: blue;" data-spm-anchor-id="0.0.0.i7.54a06c75eRjwhJ">天才少年李恒道</span>QQ<span style="    color: blue;">4548212<!--        span--></span></div><div>油猴中文网<span style="    color: red;" data-spm-anchor-id="0.0.0.i7.54a06c75eRjwhJ">bbs.tampermonkey.net.cn</span><span style="    color: blue;"><!--        span--></span></div><div></div></div><div class="FileListOutShow            " style="    height: calc(100% - 150px);    overflow-y: scroll;    padding: 5px 20px;    max-height: 300px;" data-spm-anchor-id="0.0.0.i7.54a06c75uw7F5E"></div><div style="display: flex;flex-direction: row-reverse;margin-top: 10px;align-items: center;"><div class="button-wrapper--1UkG6" data-type="primary" data-spm-anchor-id="0.0.0.i3.35676c7515rlzj" style="margin-left: 5px;" margin-right:5px;"="">开始提取</div><div class="button-wrapper--1UkG6" data-type="primary" data-spm-anchor-id="0.0.0.i3.35676c7515rlzj" style="margin-left: 5px;" margin-right:5px;"="">导入文件</div>                                                                                                                                                   <div class="SelectNumShow">当前已选:<span>0</span>项</div></div>                                                                                                                                                   </div></div></div>`
                    GenerateFileinDialogShow.onclick=function(event){
                        //多选关闭删除
                        if(event.target.outerHTML.indexOf('#PDSClose')!=-1)
                        {
                            Uploadlist=[]
                            GenerateFileInShow=false;
                            GenerateFileinDialogShow.remove()

                            return;
                        }
                        if(event.target.outerHTML.indexOf('导入文件')!=-1)
                        {
                            document.getElementById("uploadfile").click();

                            return;
                        }
                        if(event.target.outerHTML.indexOf('开始提取')!=-1)
                        {
                            alert('正在开始上传,请勿重复点击!')
                            StartAllFile()

                            return;
                        }

                    }
    document.querySelector('body').append(GenerateFileinDialogShow)
}
function MulFileDialogCreate(){
    if(GenerateFileInShow==true)
    {
        Uploadlist=[]
        GenerateFileInShow=false;
        GenerateFileinDialogShow.remove()
    }
    if(GenerateShow==true)
    {
        return;
    }
    GenerateShow=true
    GenerateDialogShow=document.createElement('div')
    GenerateDialogShow.innerHTML=`<div class="ant-modal-content" style="  500px;z-index: 99;position: absolute;top: 50px;left: calc(50% - 250px);"><div class="ant-modal-header"><div class="ant-modal-title" id="rcDialogTitle0"><div class="icon-wrapper--3dbbo" style="display: flex;align-items: center;justify-content: space-between;"><span>文件批量导出</span>    <span data-role="icon" data-render-as="svg" data-icon-type="PDSClose" class="close-icon--33bP0 icon--d-ejA " style="    cursor: pointer;"><svg viewBox="0 0 1024 1024"><use xlink:href="#PDSClose"></use></svg></span></div></div></div><div class="ant-modal-body"><div class=""><div class="cover-wrapper--2UqQb" style="    flex-direction: column;    height: 100px;" data-spm-anchor-id="0.0.0.i6.54a06c75eRjwhJ"><div>多文件批量导出 公众号:<span style="    color: blue;">叛逆青年旅舍</span></div><div>作者<span style="    color: blue;" data-spm-anchor-id="0.0.0.i7.54a06c75eRjwhJ">天才少年李恒道</span>QQ<span style="    color: blue;">4548212<!--        span--></span></div><div>油猴中文网<span style="    color: red;" data-spm-anchor-id="0.0.0.i7.54a06c75eRjwhJ">bbs.tampermonkey.net.cn</span><span style="    color: blue;"><!--        span--></span></div><div></div></div><div style="background: var(--background_secondary_blur);display: flex;align-items: center;padding: 0px 50px;justify-content: space-evenly;padding-bottom: 10px;"><div>搜索文件</div><input type="text" name="SearchMulFile" data-spm-anchor-id="0.0.0.i1.35676c753HbmyV" value=""><div class="button-wrapper--1UkG6" data-type="primary" data-spm-anchor-id="0.0.0.i3.35676c7515rlzj" style="margin-left: 5px;" margin-right:5px;"="">搜索</div>                                                                                                                                                   </div><div class="FileListOutShow            " style="    height: calc(100% - 150px);    overflow-y: scroll;    padding: 5px 20px;    max-height: 300px;" data-spm-anchor-id="0.0.0.i7.54a06c75uw7F5E">    </div><div style="display: flex;flex-direction: row-reverse;margin-top: 10px;align-items: center;"><div class="button-wrapper--1UkG6" data-type="primary" data-spm-anchor-id="0.0.0.i3.35676c7515rlzj" style="margin-left: 5px;" margin-right:5px;"="">保存至网盘</div><div class="button-wrapper--1UkG6" data-type="primary" data-spm-anchor-id="0.0.0.i3.35676c7515rlzj" style="margin-left: 5px;" margin-right:5px;"="">导出</div><div class="button-wrapper--1UkG6" data-type="primary" data-spm-anchor-id="0.0.0.i3.35676c7515rlzj" style="margin-left: 5px;" margin-right:5px;"="">全部选择</div>                                                                                                                                                   <div class="SelectNumShow">当前共:<span>330</span>项</div></div>                                                                                                                                                   </div></div></div>`
                    GenerateDialogShow.onclick=function(event){
                        debugger;
                        console.log('去他妈的导出',event.target)
                        //多选关闭删除
                        if(event.target.outerHTML.indexOf('#PDSClose')!=-1)
                        {
                            GenerateShow=false;
                            GenerateDialogShow.remove()

                            return;
                        }
                        if(event.target.innerText=='全部选择')
                        {
                            document.querySelectorAll('.FileListOutShow >div').forEach(item=>{
                                SetSelectItem(item,true)
                            })
                            return;
                        }
                        if(event.target.innerText=='搜索')
                        {
                            SearchFileMulInsert(document.querySelector('[name="SearchMulFile"]').value);
                            return;
                        }
                        if(event.target.innerText=='保存至网盘')
                        {
                            let outtext='阿里云油猴插件By:油猴中文版
作者:天才少年李恒道QQ:4548212
公众号:叛逆青年旅舍
油猴中文网:bbs.tampermonkey.net.cn
'
                            document.querySelectorAll('.FileListOutShow >div').forEach(item=>{
                                if(item.checkbox==true){
                                    outtext=outtext+item.name+'
'+item.date+'
'
                                }
                            })
                            alert('开始进行上传,请勿重复点击!')
                            UploadTextToAliYunpan(outtext)
                            return;
                        }

                        if(event.target.innerText=='导出')
                        {
                            let outtext='阿里云油猴插件By:油猴中文版
作者:天才少年李恒道QQ:4548212
公众号:叛逆青年旅舍
油猴中文网:bbs.tampermonkey.net.cn
'
                            document.querySelectorAll('.FileListOutShow >div').forEach(item=>{
                                if(item.checkbox==true){
                                    outtext=outtext+item.name+'
'+item.date+'
'
                                }
                            })
                            download('导出文件成功By:油猴中文网.txt',outtext)
                            return;
                        }

                    }
    document.querySelector('body').append(GenerateDialogShow)
    SearchFileMulInsert('')
}
function LoadDownloadText(url){
    debugger;
    GM_xmlhttpRequest({
        url:url,
        method :"GET",
        headers: {
            //"Content-type": "application/json;charset=utf-8",
            "Referer": "https://www.aliyundrive.com/",
            // "Authorization": accesstoken
        },
        onload:function(xhr){
            debugger;
            MulReadialogCreate()
            AddText(xhr.responseText)
            alert('解析完成!')
            console.log('解析文本内容!',xhr.responseText)
        }
    });

}
function DownloadTextRead(obj){
    alert('开始读取文件内容,时长根据网速决定,请勿重复点击');
    console.log('获取远程对象开始',obj)
    let useruid=JSON.parse(localStorage.getItem('token')).default_drive_id
    let uploadtext='{"drive_id":"'+useruid+'","file_id":"'+obj.file_id+'"}'
    GM_xmlhttpRequest({
        url:"https://api.aliyundrive.com/v2/file/get_download_url",
        method :"POST",
        data:uploadtext,
        headers: {
            "Content-type": "application/json;charset=utf-8",
            "Referer": "https://www.aliyundrive.com/",
            "Authorization": accesstoken
        },
        onload:function(xhr){
            var json = JSON.parse(xhr.responseText);
            if(json.url===undefined)
            {
                alert('获取下载地址失败!')
                return;

            }
            LoadDownloadText(json.url)
        }
    });

    //MulReadialogCreate()
}
async function UploadOne(num){
    return new Promise((resolve, reject) => {
        let obj=Uploadlist[num]
        let text=GetDecrText(obj.date)
        let useruid=JSON.parse(localStorage.getItem('token')).default_drive_id
        let uploadtext='{"drive_id":"'+useruid+'","part_info_list":[{"part_number":1}],"parent_file_id":"'+parent_file_id+'","name":"'+text.name+'","type":"file","check_name_mode":"auto_rename","size":'+text.size+',"content_hash":"'+text.content_hash+'","content_hash_name":"sha1"}'
        GM_xmlhttpRequest({
            url:"https://api.aliyundrive.com/v2/file/create",
            method :"POST",
            data:uploadtext,
            headers: {
                "Content-type": "application/json;charset=utf-8",
                "Authorization": accesstoken
            },
            onload:function(xhr){
                var json = JSON.parse(xhr.responseText);
                if(json.rapid_upload==true)
                {
                    Success++;
                    SetSelectItem(obj,true,false)
                    resolve('success');

                }
                else{
                    Faile++;
                    SetSelectItem(obj,false,false)
                    resolve('faile');
                }
            }
        });
    });
}
async function StartAllFile(){
    Uploadlist=document.querySelectorAll('.FileListOutShow >div')
    Success=0;
    Faile=0;
    for(let index=0;index<Uploadlist.length;index++){
        if(Uploadlist[index].checkbox===false){
            await UploadOne(index)
        }

    }
    alert('上传完毕,成功了:'+Success+'个文件,失败了:'+Faile+'文件')
    unsafeWindow.location.reload();


}
function AddText(text){
    let list=text.split('
')
    for(let index=0;index<list.length;index++)
    {
        let rowtext=list[index]
        if(rowtext.indexOf('eyJu')!=-1||rowtext.indexOf('aliyunpan://')!=-1||rowtext.indexOf('aliyunpan::')!=-1||rowtext.indexOf('115://')!=-1)
        {
            let temp=GetDecrText(rowtext)
            if(temp.content_hash==undefined)
            {
                alert('存在文件不正確!已跳過該文件!')
            }
            else{
                let FileItem=document.createElement('div')
                totalnum+=1
                SetTotalnum()
                FileItem.checkbox=false;
                FileItem.date=rowtext
                FileItem.name=temp.name
                FileItem.innerHTML='<div style="display: flex;align-items: center;justify-content: space-between;">     <div style=" 160px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">'+temp.name+'</div><div style="flex-grow: 1;text-align: center;">'+temp.size+'</div><div class="checkbox--NOwE_ checkbox-container--TNndw" role="checkbox" aria-checked="false" data-checked="false" data-partial="true" data-disabled="false" data-no-padding="false" style=" 20px;margin-right: 0px;"><div class="checkbox--11DPr" data-spm-anchor-id="0.0.0.i10.54a06c75uw7F5E"></div></div><div></div></div>'
                document.querySelector('.FileListOutShow').append(FileItem)

            }

        }
    }
    if(document.querySelectorAll('.FileListOutShow >div').length==0)
    {
        alert('找不到分享码!')
    }



}
function ReadFileList(evt){
    totalnum=0
    SetTotalnum()
    let files = evt.files
    if (files.length > 0) {
        let file = files[0];
        let reader = new FileReader();
        reader.readAsText(file);
        reader.onloadend = () => {
            let result = reader.result;
            AddText(result)
        };

    }

}
function download(filename, text) {
    var element = document.createElement('a');
    element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
    element.setAttribute('download', filename);

    element.style.display = 'none';
    document.body.appendChild(element);

    element.click();

    document.body.removeChild(element);
}
function uploadadded(event){
}
function SetTotalnum(){
    document.querySelector('.SelectNumShow span').innerText=totalnum
}
function SetSelectItem(item,check,change=true){
    if(item.checkbox===check)
    {
        return;
    }
    if( item.checkbox===false)
    {
        item.checkbox=true
        if(change==true)
        {
            totalnum+=1
            SetTotalnum()
        }

        item.children[0].children[2].setAttribute('data-checked','true')
        item.children[0].children[2].innerHTML='<div class="checkbox--11DPr" data-spm-anchor-id="0.0.0.i10.54a06c75uw7F5E"><svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M12.6247 5.29974L7.26637 11.9977L3.83435 8.56567L4.96572 7.4343L7.1337 9.60228L11.3753 4.30023L12.6247 5.29974Z"></path></svg></div>'
    }
    else{
        item.checkbox=false
        if(change==true)
        {
            totalnum-=1
            SetTotalnum()
        }

        item.children[0].children[2].setAttribute('data-checked','false')
        item.children[0].children[2].innerHTML='<div class="checkbox--11DPr" data-spm-anchor-id="0.0.0.i10.54a06c75uw7F5E"></div>'
    }
}
function SearchFileMulInsert(text){
    document.querySelector('.FileListOutShow').innerText=''
    totalnum=0
    for(let index=0;index<FileList.length;index++){
        let templist=FileList[index]
        for(let innerindex=0;innerindex<templist.list.length;innerindex++)
        {
            let tempobj=templist.list[innerindex]

            if(tempobj.type!=='folder')
            {
                if(text===''||tempobj.name.indexOf(text)!=-1)
                {
                    let FileItem=document.createElement('div')
                    FileItem.checkbox=false;
                    FileItem.date=GetFileSha1Encr(tempobj)
                    FileItem.name=tempobj.name
                    FileItem.innerHTML='<div style="display: flex;align-items: center;justify-content: space-between;">     <div style=" 160px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">'+tempobj.name+'</div><div style="flex-grow: 1;text-align: center;">'+tempobj.size+'</div><div class="checkbox--NOwE_ checkbox-container--TNndw" role="checkbox" aria-checked="false" data-checked="false" data-partial="true" data-disabled="false" data-no-padding="false" style=" 20px;margin-right: 0px;"><div class="checkbox--11DPr" data-spm-anchor-id="0.0.0.i10.54a06c75uw7F5E"></div></div><div></div></div>'
                    FileItem.onclick=function(event){
                        if(event.target.outerHTML.indexOf('checkbox')!==-1||event.target.outerHTML.indexOf('M12.6247 5.29974L7.26637')!==-1)
                        {
                            SetSelectItem(FileItem,!FileItem.checkbox)

                        }
                    }

                    document.querySelector('.FileListOutShow').append(FileItem)
                }

            }

        }
    }

    SetTotalnum()

}
function ShowToast(text,time=3000){
    let toast=document.createElement('div')
    toast.innerHTML='<div><div class="drive-toast"><div><div class="drive-toast-notice"><div class="drive-toast-notice-content"><div class="drive-toast-custom-content drive-toast-info"><div></div><span><div class="content-wrapper--B7mAG" style="margin-left: 20px; " data-desc="false"><div class="title-wrapper--3bQQ2">'
        + text+
        '<div class="desc-wrapper--218x0"></div></div></div></span></div></div></div></div></div></div>'
    document.querySelector('body').append(toast)
    setInterval(function(){toast.remove() }, time);

}
function RefreshToken(){
    if(accesstoken!=='')
    {
        return;
    }
    GM_xmlhttpRequest({
        url:"https://websv.aliyundrive.com/token/refresh",
        method :"POST",
        data:'{"refresh_token": "'+JSON.parse(localStorage.getItem('token')).refresh_token+'"}',
        headers: {
            "Content-type": "application/json;charset=utf-8",
        },
        onload:function(xhr){
            var json = JSON.parse(xhr.responseText);
            accesstoken=json.access_token
            if(accesstoken!==undefined&&accesstoken!='')
            {

            }
            else{
                ShowToast('解析Acess_Token失败!')

            }
        }
    });
}
function CreateShareClip(tempobj){
    ShowFileObj.name=tempobj.name;
    ShowFileObj.content_hash=tempobj.content_hash;
    ShowFileObj.size=tempobj.size;
    ShowFileObj.content_type=tempobj.content_type;
    ShowFileObj.file_id=tempobj.file_id;
    let ret=confirm('文件名:'+ShowFileObj.name+'
校验值:'+ShowFileObj.content_hash+'
文件大小:'+ShowFileObj.size+'
'+
                    '点击确定自动添加分享码到剪辑版
来自油猴中文网bbs.tampermonkey.net.cn
公众号:叛逆青年旅舍');
    if(ret==true)
    {
        try
        {

            GM_setClipboard(GetFileSha1Encr(tempobj))
            alert('文件已设置到剪辑版!')
        }
        catch(err)
        {

            alert('文件名字可能存在特殊关键字,请改名重试')
        }

    }
}
function StartListner(){


    setInterval(function(event) {
        if(CreateSaveBtn===false)
        {
            let header=document.querySelector('[class|=header]')
            if(header!==null&&header.childElementCount===2&&document.querySelector('[class|=header]').children[1].innerText.indexOf('提取分享码')===-1){
                let GenerateShareBtn=document.createElement('div')
                GenerateShareBtn.innerHTML='<div class="button-wrapper--1UkG6" data-type="primary" data-spm-anchor-id="0.0.0.i3.35676c7515rlzj" style="margin-left: 5px;"margin-right:5px;">提取分享码</div>'
                GenerateShareBtn.onclick=function(){
                    var text=prompt("请输入分享码","");
                    if(text==null)
                    {
                        return;}
                    try{
                        text=GetDecrText(text)
                    }catch(err){
                        alert('解析提取码失败!')
                        return;
                    }
                    if(text.content_hash==undefined)
                    {
                        alert('提取码不正确!')
                    }
                    else{
                        if(accesstoken=='')
                        {
                            alert('访问Token异常!')
                            return;
                        }
                        let useruid=JSON.parse(localStorage.getItem('token')).default_drive_id
                        let uploadtext='{"drive_id":"'+useruid+'","part_info_list":[{"part_number":1}],"parent_file_id":"'+parent_file_id+'","name":"'+text.name+'","type":"file","check_name_mode":"auto_rename","size":'+text.size+',"content_hash":"'+text.content_hash+'","content_hash_name":"sha1"}'


                        GM_xmlhttpRequest({
                            url:"https://api.aliyundrive.com/v2/file/create",
                            method :"POST",
                            data:uploadtext,
                            headers: {
                                "Content-type": "application/json;charset=utf-8",
                                "Authorization": accesstoken
                            },
                            onload:function(xhr){
                                var json = JSON.parse(xhr.responseText);
                                if(json.rapid_upload==true)
                                {
                                    alert("提取文件成功!")
                                    unsafeWindow.location.reload();
                                }
                                else{
                                    alert("提取文件失败!")
                                }
                            }
                        });

                    }

                }
                let GenerateFileOut=document.createElement('div')
                GenerateFileOut.innerHTML='<div class="button-wrapper--1UkG6" data-type="primary" style="margin-left: 5px;"margin-right:5px;">多文件分享</div>'
                GenerateFileOut.onclick=function(){
                    MulFileDialogCreate()

                }
                let GenerateFileIn=document.createElement('div')

                GenerateFileIn.innerHTML='<div class="button-wrapper--1UkG6" data-type="primary" style="margin-left: 5px;"margin-right:5px;">多文件提取</div>'
                GenerateFileIn.onclick=function(){
                    MulReadialogCreate()


                }
                document.querySelector('[class|=header]').children[1].append(GenerateShareBtn)
                document.querySelector('[class|=header]').children[1].append(GenerateFileOut)
                document.querySelector('[class|=header]').children[1].append(GenerateFileIn)
            }

        }
        //info-wrapper--
        let formlist=document.querySelectorAll('.ant-modal-body')
        for(let forminedx=0;forminedx<formlist.length;forminedx++){
            let form=formlist[forminedx]
            if(form.offsetWidth==0)
            {
                continue;
            }


            if(form!=null&&form.innerHTML.indexOf('详细信息')!=-1)
            {
                if(form.innerHTML.indexOf('创建时间')!=-1)
                {
                    let img=form.children[0].children[0].children[0].children[0].alt
                    if(img!==null&&img.alt==="folder")
                    {
                        if(document.querySelector('.ant-modal-body').innerText.indexOf('生成分享')!==-1)
                        {
                            document.querySelector('.ant-modal-body [data-type="primary"]').remove()
                        }
                        return;

                    }
                    /*if(img!==null&&img.alt==="text")
                    {
                        let innertext=document.querySelector('.ant-modal-body').innerText
                        if(innertext.indexOf('生成分享')!==-1&&innertext.indexOf('远程提取')===-1)
                        {
                            document.querySelector('.dingwei').style.display='flex'
                            document.querySelector('.dingwei').innerHTML='<div class="button-wrapper--1UkG6 FuckNetTextChild" data-type="primary">生成分享</div><div class="button-wrapper--1UkG6 FuckNetTextChild" data-type="primary" style=" margin-left: 5px;">远程提取</div>'

                         return;
                        }

                    }*/

                    if(form.innerHTML.indexOf('生成分享')==-1)
                    {
                        let GenerateFileDate=document.createElement('div')
                        GenerateFileDate.style.display='flex'
                        GenerateFileDate.innerHTML='<div class="button-wrapper--1UkG6 FuckNetTextChild" data-type="primary">生成分享</div><div class="button-wrapper--1UkG6 FuckNetTextChild" data-type="primary" style=" margin-left: 5px;">远程提取</div>'
                        /*if(img.alt==="text")
                        {
                            GenerateFileDate.style.display='flex'
                            GenerateFileDate.innerHTML='<div class="button-wrapper--1UkG6 FuckNetTextChild" data-type="primary">生成分享</div><div class="button-wrapper--1UkG6 FuckNetTextChild" data-type="primary" style=" margin-left: 5px;">远程提取</div>'

                        }else{
                            GenerateFileDate.innerHTML='<div class="button-wrapper--1UkG6 FuckNetTextChild" data-type="primary">生成分享</div>'
                        }*/
                        GenerateFileDate.onclick=function(event){
                            if(event.target.innerText=='生成分享')
                            {
                                let name=document.querySelector('[class|=title-wrapper]').innerText
                                for(let index=0;index<FileList.length;index++){
                                    let templist=FileList[index]
                                    for(let innerindex=0;innerindex<templist.list.length;innerindex++)
                                    {
                                        let tempobj=templist.list[innerindex]

                                        if(tempobj.type!=='folder')
                                        {
                                            if(tempobj.name===name)
                                            {
                                                CreateShareClip(tempobj)
                                                return;
                                            }

                                        }

                                    }

                                }

                                return;
                            }
                            if(event.target.innerText=='远程提取')
                            {
                                let name=document.querySelector('[class|=title-wrapper]').innerText
                                for(let index=0;index<FileList.length;index++){
                                    let templist=FileList[index]
                                    for(let innerindex=0;innerindex<templist.list.length;innerindex++)
                                    {
                                        let tempobj=templist.list[innerindex]

                                        if(tempobj.type!=='folder')
                                        {
                                            if(tempobj.name===name)
                                            {
                                                if(tempobj.file_extension==="txt")
                                                {
                                                    console.log('查看文件',tempobj)
                                                    if(tempobj.size>uploadsize){
                                                        alert('该文本文档的大小过大!无法使用该功能')
                                                    }
                                                    else{
                                                        let temlist=document.querySelectorAll('[role="document"] [data-icon-type="PDSClose"]')
                                                        for(let index=0;index<temlist.length;index++){
                                                            temlist[index].click()
                                                        }
                                                        DownloadTextRead(tempobj)
                                                    }

                                                }else{
                                                    alert('该文件不是文本文件!')
                                                }
                                                return;
                                            }

                                        }

                                    }

                                }

                                return;
                            }
                        }
                        let WrapperList=document.querySelectorAll('[class|=group-wrapper]')
                        WrapperList[WrapperList.length-1].append(GenerateFileDate)

                    }




                }


            }

        }
    }, 1500);


}
if(unsafeWindow.location.href.indexOf('aliyundrive.com/drive')!=-1)
{
    function addXMLRequestCallback(callback){
        var oldSend, i;
        if( XMLHttpRequest.callbacks ) {
            XMLHttpRequest.callbacks.push( callback );
        } else {
            XMLHttpRequest.callbacks = [callback];
            oldSend = XMLHttpRequest.prototype.send;
            XMLHttpRequest.prototype.send = function(){
                for( i = 0; i < XMLHttpRequest.callbacks.length; i++ ) {
                    XMLHttpRequest.callbacks[i]( this );
                }
                if(arguments[0].indexOf!=undefined)
                {
                    if(arguments[0].indexOf('marker')==-1)
                    {
                        this.CreatFirstList=true
                    }else if(FileList.length!=0&&arguments[0].indexOf(FileList[FileList.length-1].name)!==-1){
                        this.NextList=true

                    }
                    if(arguments[0].indexOf('parent_file_id')!==-1)
                    {
                        parent_file_id=JSON.parse(arguments[0]).parent_file_id
                    }
                }
                //FileList=[{name:item.next_marker,list:item.items}]
                oldSend.apply(this, arguments);
            }
        }
    }
    addXMLRequestCallback( function( xhr ) {
        //CreateBanList
        xhr.addEventListener("load", function(){
            if ( xhr.readyState == 4 && xhr.status == 200 ) {
                if(xhr.responseURL==="https://websv.aliyundrive.com/token/refresh"){
                    accesstoken=JSON.parse(xhr.response).access_token

                }
                if(xhr.responseURL==="https://api.aliyundrive.com/v2/file/list")
                {
                    let quit=false;
                    document.querySelectorAll('.ant-modal-header').forEach((item)=>{
                        if(item.innerText.indexOf('移动')!==-1)
                        {
                            if(item.offsetWidth!==0)
                            {
                                quit=true
                            }

                        }
                    })
                    if(quit)
                    {
                        return;
                    }
                    let item=JSON.parse(xhr.response)
                    if(listurl===unsafeWindow.location.href)
                    {
                        if(xhr.CreatFirstList==true)
                        {
                            FileList=[{name:item.next_marker,list:item.items}]
                            filenum=item.items.length
                        }
                        else{
                            let Search=false;
                            FileList.forEach((item)=>{
                                if(item.name===item.next_marker)
                                {
                                    item.list=item.items
                                    Search=true
                                }
                            })
                            if(Search===false&&xhr.NextList==true)
                            {
                                FileList.push({name:item.next_marker,list:item.items})
                                filenum+=item.items.length
                            }
                        }
                    }
                    else{
                        listurl=unsafeWindow.location.href
                        FileList=[{name:item.next_marker,list:item.items}]

                        filenum=item.items.length
                    }
                    if(CreateListner===false)
                    {
                        StartListner()
                        CreateListner=true
                    }
                    RefreshToken()
                    ShowToast('已获取文件列表 数量为'+filenum+'(数字如不准请联系作者) By:天才少年李恒道')

                }
            }
        });

    });

}

if(unsafeWindow.location.href.indexOf('passport.aliyundrive.com/mini_login.htm')!=-1)
{
    let container=document.querySelector('#container');

    container.addEventListener("DOMNodeInserted", function(event) {
        if(username=='')
        {
            return}
        if(password=='')
        {
            return}

        let header=document.querySelector('.login-blocks')
        if(header===null)
        {
            return;
        }
        document.querySelector('.login-blocks').children[1].click()
        document.querySelector('#fm-login-id').value=username
        document.querySelector('#fm-login-password').value=password
        document.querySelector('.password-login').click()

    });



    return;
}
View Code
原文地址:https://www.cnblogs.com/dshvv/p/14672019.html