mirror of
https://github.com/googlefonts/noto-emoji.git
synced 2025-07-08 13:36:40 +00:00
minor improvements
This commit is contained in:
parent
1aa177e6d3
commit
6f777a08dd
1 changed files with 22 additions and 37 deletions
|
@ -47,9 +47,9 @@ def main(folder_name="", reporting=False):
|
||||||
folder_id = get_folder_id(service, folder_name)
|
folder_id = get_folder_id(service, folder_name)
|
||||||
|
|
||||||
# Create output_dir
|
# Create output_dir
|
||||||
output_dir = create_dir("temp_download_folder")
|
output_dir = ensure_directory_exists("temp_download_folder")
|
||||||
|
|
||||||
# Get the file IDs
|
# Get the file IDs to download
|
||||||
file_list = get_file_list(service, folder_id)
|
file_list = get_file_list(service, folder_id)
|
||||||
|
|
||||||
# Download the files from the drive and put them in the output_dir
|
# Download the files from the drive and put them in the output_dir
|
||||||
|
@ -64,14 +64,13 @@ def main(folder_name="", reporting=False):
|
||||||
|
|
||||||
|
|
||||||
def get_service():
|
def get_service():
|
||||||
"""Autenticate yourself and create a token.pickle to use the google apiclient"""
|
"""Autenticate yourself and create a token.pickle to use the google apiclient.
|
||||||
|
The file token.pickle stores the user's access and refresh tokens, and is
|
||||||
# The file token.pickle stores the user's access and refresh tokens, and is
|
created automatically when the authorization flow completes for the first
|
||||||
# created automatically when the authorization flow completes for the first
|
time."""
|
||||||
# time.
|
|
||||||
|
|
||||||
creds = None
|
creds = None
|
||||||
if path.exists("token.pickle"):
|
if path.isfile("token.pickle"):
|
||||||
with open("token.pickle", "rb") as token:
|
with open("token.pickle", "rb") as token:
|
||||||
creds = pickle.load(token)
|
creds = pickle.load(token)
|
||||||
# If there are no (valid) credentials available, let the user log in.
|
# If there are no (valid) credentials available, let the user log in.
|
||||||
|
@ -79,12 +78,11 @@ def get_service():
|
||||||
if creds and creds.expired and creds.refresh_token:
|
if creds and creds.expired and creds.refresh_token:
|
||||||
creds.refresh(Request())
|
creds.refresh(Request())
|
||||||
else:
|
else:
|
||||||
if not path.exists("credentials.json"):
|
if not path.isfile("credentials.json"):
|
||||||
print("You are missing 'credentials.json'. "
|
sys.exit("You are missing 'credentials.json'. "
|
||||||
"Please get this file here: "
|
"Please get this file here: "
|
||||||
"https://developers.google.com/drive/api/v3/quickstart/python "
|
"https://developers.google.com/drive/api/v3/quickstart/python "
|
||||||
"and include it in the root of your project.")
|
"and include it in the root of your project.")
|
||||||
sys.exit(1)
|
|
||||||
flow = InstalledAppFlow.from_client_secrets_file("credentials.json", SCOPES)
|
flow = InstalledAppFlow.from_client_secrets_file("credentials.json", SCOPES)
|
||||||
creds = flow.run_local_server(port=0)
|
creds = flow.run_local_server(port=0)
|
||||||
# Save the credentials for the next run
|
# Save the credentials for the next run
|
||||||
|
@ -97,7 +95,8 @@ def get_service():
|
||||||
|
|
||||||
|
|
||||||
def get_folder_id(service, folder_name):
|
def get_folder_id(service, folder_name):
|
||||||
"""Get the folder id instead of the folder name."""
|
"""Get the folder id instead of the folder name. The api needs an
|
||||||
|
ID instead of a Name"""
|
||||||
folder = service.files().list(
|
folder = service.files().list(
|
||||||
q=f"name='{folder_name}' and mimeType='application/vnd.google-apps.folder'",
|
q=f"name='{folder_name}' and mimeType='application/vnd.google-apps.folder'",
|
||||||
fields='files(id, name, parents)').execute()
|
fields='files(id, name, parents)').execute()
|
||||||
|
@ -105,17 +104,14 @@ def get_folder_id(service, folder_name):
|
||||||
total = len(folder['files'])
|
total = len(folder['files'])
|
||||||
|
|
||||||
if total != 1:
|
if total != 1:
|
||||||
print(f'{total} folders found, needs exactly one')
|
sys.exit(f'{total} folders found, needs exactly one')
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
else:
|
folder_id = folder['files'][0]['id']
|
||||||
folder_id = folder['files'][0]['id']
|
|
||||||
|
|
||||||
return folder_id
|
return folder_id
|
||||||
|
|
||||||
|
|
||||||
def create_dir(dir_name):
|
def ensure_directory_exists(dir_name):
|
||||||
"""Create dir if it does not yet exist."""
|
|
||||||
if not path.exists(dir_name):
|
if not path.exists(dir_name):
|
||||||
makedirs(dir_name)
|
makedirs(dir_name)
|
||||||
|
|
||||||
|
@ -123,7 +119,8 @@ def create_dir(dir_name):
|
||||||
|
|
||||||
|
|
||||||
def get_file_list(service, folder_id):
|
def get_file_list(service, folder_id):
|
||||||
"""Get all files in the Google drive folder."""
|
"""Get all files in the Google drive folder.
|
||||||
|
So they can be downloaded"""
|
||||||
result = []
|
result = []
|
||||||
page_token = None
|
page_token = None
|
||||||
while True:
|
while True:
|
||||||
|
@ -143,8 +140,8 @@ def get_file_list(service, folder_id):
|
||||||
|
|
||||||
|
|
||||||
def download_files(service, file_list, output_dir):
|
def download_files(service, file_list, output_dir):
|
||||||
"""Download all the files in the file_list."""
|
"""Download all the files in the file_list and
|
||||||
|
place them in the output_dir"""
|
||||||
print("Downloading files")
|
print("Downloading files")
|
||||||
for file in file_list:
|
for file in file_list:
|
||||||
file_id = file['id']
|
file_id = file['id']
|
||||||
|
@ -152,23 +149,12 @@ def download_files(service, file_list, output_dir):
|
||||||
|
|
||||||
if "emoji_u" in filename and ".png" in filename:
|
if "emoji_u" in filename and ".png" in filename:
|
||||||
|
|
||||||
request = service.files().get_media(fileId=file_id)
|
|
||||||
fh = io.BytesIO()
|
fh = io.BytesIO()
|
||||||
downloader = MediaIoBaseDownload(fh, request)
|
|
||||||
done = False
|
|
||||||
while done is False:
|
|
||||||
status, done = downloader.next_chunk()
|
|
||||||
|
|
||||||
filelocation = f"./{output_dir}/{filename}"
|
|
||||||
with open(filelocation, "wb") as f:
|
|
||||||
f.write(fh.getbuffer())
|
|
||||||
|
|
||||||
print(f"Downloading: {filename} ({file_id})")
|
print(f"Downloading: {filename} ({file_id})")
|
||||||
request = service.files().get_media(fileId=file_id)
|
request = service.files().get_media(fileId=file_id)
|
||||||
fh = io.BytesIO()
|
|
||||||
downloader = MediaIoBaseDownload(fh, request)
|
downloader = MediaIoBaseDownload(fh, request)
|
||||||
done = False
|
done = False
|
||||||
while done is False:
|
while not done:
|
||||||
status, done = downloader.next_chunk()
|
status, done = downloader.next_chunk()
|
||||||
|
|
||||||
filelocation = f"{output_dir}/{filename}"
|
filelocation = f"{output_dir}/{filename}"
|
||||||
|
@ -201,7 +187,6 @@ def report_on_download(output_dir):
|
||||||
|
|
||||||
def merge_png_dirs(output_dir):
|
def merge_png_dirs(output_dir):
|
||||||
"""Combine local and downloaded PNGs."""
|
"""Combine local and downloaded PNGs."""
|
||||||
|
|
||||||
copy_tree("./png/128", "./build/combined_png")
|
copy_tree("./png/128", "./build/combined_png")
|
||||||
src_files = listdir(output_dir)
|
src_files = listdir(output_dir)
|
||||||
for file_name in src_files:
|
for file_name in src_files:
|
||||||
|
|
Loading…
Add table
Reference in a new issue