updates
This commit is contained in:
74
cmg-get-drive-link.py
Executable file
74
cmg-get-drive-link.py
Executable file
@@ -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)
|
||||||
Reference in New Issue
Block a user