Files
cmg-commands/cmg-get-drive-link.py
2024-12-13 16:20:07 -06:00

75 lines
2.5 KiB
Python
Executable File

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