| 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() |