From bfc6b1c304befb0c86b7afbdaecc871c2e0a8d62 Mon Sep 17 00:00:00 2001 From: guidotheelen Date: Wed, 15 Apr 2020 13:07:09 +0200 Subject: [PATCH] merge png dirs --- get_png_files_from_drive.py | 49 ++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/get_png_files_from_drive.py b/get_png_files_from_drive.py index 1dddd32d8..91875e82f 100644 --- a/get_png_files_from_drive.py +++ b/get_png_files_from_drive.py @@ -2,10 +2,12 @@ from __future__ import print_function import pickle -from os import path, makedirs +from os import path, makedirs, walk, listdir import io import fire import sys +import shutil +from distutils.dir_util import copy_tree from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request @@ -15,10 +17,10 @@ from googleapiclient.http import MediaIoBaseDownload SCOPES = ["https://www.googleapis.com/auth/drive"] # Use this file like this: -# python get_png_files_from_drive.py main "Drive_folder_name" "Output_dir_name" +# python get_png_files_from_drive.py main "Drive_folder_name" "Output_dir_name" --reporting -def main(folder_name, output_dir): +def main(folder_name, output_dir, reporting=False): # Create a token.pickle file to store the users session service = get_service() @@ -35,6 +37,13 @@ def main(folder_name, output_dir): # Download the files from the drive and put them in the output_dir download_files(service, file_list, output_dir) + if reporting: + # Generate a report on the downloaded files + report_on_download(output_dir) + + # Create a combined PNG dir. Files in the png dir are the default + merge_png_dirs(output_dir) + def get_service(): @@ -145,5 +154,39 @@ def download_files(service, file_list, output_dir): f.write(fh.getbuffer()) +def report_on_download(output_dir): + path, dirs, files = next(walk("./png/128")) + file_count = len(files) + + print(files) + print(f"The original PNG directory contains {file_count} files.") + + out_path, out_dirs, out_files = next(walk(output_dir)) + downloaded_file_count = len(out_files) + + print(f"The downloaded PNG directory contains {downloaded_file_count} files.") + + overlap_count = 0 + new_file_count = 0 + for file in out_files: + if file in files: + overlap_count += 1 + else: + new_file_count += 1 + + print(f"{overlap_count} files in the {output_dir} are also in the original PNG folder") + print(f"{new_file_count} files are new files that dont excist in the original PNG folder") + print("These folders are now being combined in the combined_png directory") + + +def merge_png_dirs(output_dir): + copy_tree("./png/128", "./combined_png") + src_files = listdir(output_dir) + for file_name in src_files: + full_file_name = path.join(output_dir, file_name) + if path.isfile(full_file_name): + shutil.copy(full_file_name, "./combined_png") + shutil.rmtree(output_dir) + if __name__ == "__main__": fire.Fire()