Baik Guru Duan! Ini versi rekursif dari script sebelumnya — akan menyalin seluruh isi folder, termasuk subfolder dan file di dalamnya, ke akun Google Drive Guru Duan.
✅ LANGKAH-LANGKAH:
-
Buat notebook baru: File > New notebook
-
Tempel seluruh kode di bawah ke dalam 1 cell dan jalankan:
# 🔧 MOUNT GOOGLE DRIVE AND AUTH
from google.colab import drive
drive.mount('/content/drive')
!pip install -U -q PyDrive
import os
import shutil
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive_ = GoogleDrive(gauth)
# 📁 ID folder sumber (dari link yang Guru Duan berikan)
source_folder_id = '12Fdk3k5CTwUL1Amm_4ul8DKycQCM3QiI'
# 📁 Folder tujuan di My Drive
target_root = "/content/drive/MyDrive/Hasil_Salinan_Dari_Folder_Public"
os.makedirs(target_root, exist_ok=True)
# 🔁 Fungsi rekursif untuk menyalin isi folder
def copy_folder_recursive(source_id, target_path):
file_list = drive_.ListFile({'q': f"'{source_id}' in parents and trashed=false"}).GetList()
for file1 in file_list:
file_title = file1['title']
file_id = file1['id']
mimetype = file1['mimeType']
if mimetype == 'application/vnd.google-apps.folder':
print(f"📁 Membuat subfolder: {file_title}")
subfolder_path = os.path.join(target_path, file_title)
os.makedirs(subfolder_path, exist_ok=True)
copy_folder_recursive(file_id, subfolder_path)
else:
print(f"⬇️ Mengunduh: {file_title}")
downloaded = drive_.CreateFile({'id': file_id})
try:
downloaded.GetContentFile(file_title)
print(f"⬆️ Menyalin ke Drive: {file_title}")
shutil.copy(file_title, os.path.join(target_path, file_title))
os.remove(file_title)
except:
print(f"⚠️ Gagal mengunduh: {file_title}")
# 🚀 Jalankan penyalinan
print("🚀 Memulai penyalinan folder dan semua isinya...")
copy_folder_recursive(source_folder_id, target_root)
print("✅ Selesai menyalin semua file dan subfolder.")
📝 Catatan:
-
File akan disalin ke:
My Drive > Hasil_Salinan_Dari_Folder_Public
-
Format Google Docs/Sheets/Slides tidak bisa diunduh langsung dalam format aslinya, tetapi bisa ditambahkan konversi kalau diperlukan.
-
Proses bisa memakan waktu tergantung jumlah dan ukuran file.
Kalau Guru Duan ingin menambahkan:
-
Konversi otomatis Google Docs ke PDF
-
Atau filter jenis file yang disalin
Silakan bilang saja, saya bantu buatkan.
0 comments:
Post a Comment