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