diff --git a/cmg-get-drive-link.py b/cmg-get-drive-link.py new file mode 100755 index 0000000..5739c16 --- /dev/null +++ b/cmg-get-drive-link.py @@ -0,0 +1,74 @@ +#!/usr/bin/python3 +from urllib import request +from urllib.parse import urlparse, parse_qs +from html.parser import HTMLParser +import re + +class FormInputFinder(HTMLParser): + def __init__(self, target_name=None, target_id=None): + super().__init__() + self.target_name = target_name + self.target_id = target_id + self.input_value = None + + def handle_starttag(self, tag, attrs): + if tag == 'input': + attrs_dict = dict(attrs) + if (self.target_name and attrs_dict.get('name') == self.target_name) or \ + (self.target_id and attrs_dict.get('id') == self.target_id): + self.input_value = attrs_dict.get('value', '') + + +def is_url(input_string): + regex = r"https:\/\/drive\.google\.com\/file\/d\/[^\s&]+\?usp=drive_link" + return re.match(regex, input_string) + + +def get_file_id(): + while True: + url = input("Enter the Google Drive Share URL: ") + if is_url(url): + file_id = url.split('/')[5] + # print(file_id) + return file_id + else: + print(f"The URL is not valid. Please try again.") + +def get_link_from_google_drive(file_id): + def get_token(site_text, target_name): + finder = FormInputFinder(target_name=target_name) + finder.feed(site_text) + the_token = finder.input_value + if the_token: + return the_token + else: + return None + + # URL = "https://drive.google.com/uc?export=download&id=" + file_id + URL = "https://drive.usercontent.google.com/download?export=download&authuser=0&id=" + file_id + + response = request.urlopen(URL) + data = response.read() + try: + site_text = data.decode("utf8") + except UnicodeDecodeError: + print("===========================================================================================") + print("We believe this is trying to download the actual zip file, without asking about virus scan.") + print("===========================================================================================") + return None + uuid_token = get_token(site_text, 'uuid') + at_token = get_token(site_text, 'at') + # print(site_text) + response.close() + + if uuid_token and at_token: + url = f"{URL}&confirm=t&uuid={uuid_token}&at={at_token}" + print(url) + elif uuid_token: + url = f"{URL}&confirm=t&uuid={uuid_token}" + print(url) + else: + print(URL) + +file_id = get_file_id() +get_link_from_google_drive(file_id) diff --git a/split_zip_into_smaller_chunks.py b/cmg-split-zip-smaller-chunks.py similarity index 100% rename from split_zip_into_smaller_chunks.py rename to cmg-split-zip-smaller-chunks.py