#!/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)