-
Notifications
You must be signed in to change notification settings - Fork 0
/
drive-album.js
46 lines (38 loc) · 1.44 KB
/
drive-album.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const got = require("got");
async function GetGoogleDrive(url = "", browse){
if(!url.includes('http')) {
url = "https://drive.google.com/drive/folders/" + url + "?usp=sharing"
}
const req = await got(url);
const text = req.body;
const drive = [];
const regex = new RegExp(/\["([\d\w-]+?)",\["[\d\w-]+?"\],"(.+?)","(.+?)"/gi);
let res;
while((res = regex.exec(text)) != null){
const isFolder = res[3] == "application/vnd.google-apps.folder";
const type = isFolder ? "folder" : "image";
if(!drive.find(e => e.id == res[1]) && (res[3].includes("folder") || res[3].includes("image"))) drive.push({
id: res[1],
name: res[2],
realType: res[3],
type: type,
url: isFolder ? `https://drive.google.com/drive/folders/${res[1]}` :
`http://drive.google.com/uc?type=view&id=${res[1]}`
})
};
//inspect all directory
if(browse){
let folders = drive.filter(e => e.type == "folder");
while(folders && folders.length > 0){
let content = [];
for(const folder of folders){
const folderDrive = await GetGoogleDrive(folder.id);
folder.content = folderDrive;
content = content.concat(folderDrive);
}
folders = content.filter(e => e.type == "folder")
}
}
return drive;
};
module.exports = GetGoogleDrive;