|
import time
|
|
import threading
|
|
|
|
from googleapiclient.discovery import build
|
|
|
|
|
|
class Clean:
|
|
def __init__(self, every=300):
|
|
self.service = build('drive', 'v3')
|
|
self.every = every
|
|
self.trash_cleanup_thread = None
|
|
|
|
def delete(self):
|
|
page_token = None
|
|
|
|
while 1:
|
|
response = self.service.files().list(q="trashed=true", spaces='drive', fields="nextPageToken, files(id, name)", pageToken=page_token).execute()
|
|
|
|
for file in response.get('files', []):
|
|
if file['name'].startswith("G_") or file['name'].startswith("D_"):
|
|
try:
|
|
self.service.files().delete(fileId=file['id']).execute()
|
|
except Exception as e:
|
|
raise RuntimeError(e)
|
|
|
|
page_token = response.get('nextPageToken', None)
|
|
if page_token is None: break
|
|
|
|
def clean(self):
|
|
while 1:
|
|
self.delete()
|
|
time.sleep(self.every)
|
|
|
|
def start(self):
|
|
self.trash_cleanup_thread = threading.Thread(target=self.clean)
|
|
self.trash_cleanup_thread.daemon = True
|
|
self.trash_cleanup_thread.start()
|
|
|
|
def stop(self):
|
|
if self.trash_cleanup_thread: self.trash_cleanup_thread.join() |