Back to Library
Google Drive
js • 1/27/2026
10
const axios = require("axios")
async function drivedl(url) {
try {
const API_KEY = "AIzaSyAA9ERw-9LZVEohRYtCWka_TQc6oXmvcVU"
const extractFileId = (driveUrl) => {
const patterns = [
/\/file\/d\/([a-zA-Z0-9_-]+)/,
/id=([a-zA-Z0-9_-]+)/,
/folders\/([a-zA-Z0-9_-]+)/,
/^([a-zA-Z0-9_-]+)$/
]
for (const pattern of patterns) {
const match = driveUrl.match(pattern)
if (match) return match[1]
}
return null
}
const fileId = extractFileId(url)
if (!fileId) throw new Error("Invalid Google Drive URL or ID.")
const { data: metadata } = await axios.get(`https://www.googleapis.com/drive/v3/files/${fileId}?key=${API_KEY}&fields=id,name,mimeType,size,webContentLink,owners,createdTime`)
if (metadata.mimeType === "application/vnd.google-apps.folder") {
const { data: list } = await axios.get(`https://www.googleapis.com/drive/v3/files?key=${API_KEY}&q='${fileId}'+in+parents&fields=files(id,name,mimeType,size,owners,createdTime)`)
const files = list.files || []
return {
type: "folder",
details: {
id: metadata.id,
name: metadata.name,
mimeType: metadata.mimeType,
createdTime: metadata.createdTime,
totalFiles: files.length,
owner: metadata.owners && metadata.owners[0] ? {
name: metadata.owners[0].displayName,
email: metadata.owners[0].emailAddress,
photoLink: metadata.owners[0].photoLink
} : null
},
contents: files.filter(file => !file.mimeType.includes("application/vnd.google-apps.folder")).map(file => ({
id: file.id,
name: file.name,
mimeType: file.mimeType,
size: file.size ? `${(file.size / 1024 / 1024).toFixed(2)} MB` : "N/A",
createdTime: file.createdTime,
downloadUrl: `https://www.googleapis.com/drive/v3/files/${file.id}?alt=media&key=${API_KEY}`
}))
}
} else {
return {
type: "file",
details: {
id: metadata.id,
name: metadata.name,
mimeType: metadata.mimeType,
size: metadata.size ? `${(metadata.size / 1024 / 1024).toFixed(2)} MB` : "N/A",
createdTime: metadata.createdTime,
owner: metadata.owners && metadata.owners[0] ? {
name: metadata.owners[0].displayName,
email: metadata.owners[0].emailAddress,
photoLink: metadata.owners[0].photoLink
} : null
},
downloadUrl: `https://www.googleapis.com/drive/v3/files/${metadata.id}?alt=media&key=${API_KEY}`,
directDownload: metadata.webContentLink
}
}
} catch (error) {
throw new Error(error.message)
}
}
module.exports = { drivedl }