Add support for google drive links (#1625)
This commit is contained in:
@@ -46,8 +46,25 @@ def get_file_extension_from_headers(headers: CIMultiDictProxy[str]) -> str:
|
|||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
def extract_google_drive_file_id(url: str) -> str | None:
|
||||||
|
"""Extract file ID from Google Drive URL."""
|
||||||
|
# Handle format: https://drive.google.com/file/d/{file_id}/view
|
||||||
|
match = re.search(r"/file/d/([a-zA-Z0-9_-]+)", url)
|
||||||
|
if match:
|
||||||
|
return match.group(1)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
async def download_file(url: str, max_size_mb: int | None = None) -> str:
|
async def download_file(url: str, max_size_mb: int | None = None) -> str:
|
||||||
try:
|
try:
|
||||||
|
# Check if URL is a Google Drive link
|
||||||
|
if "drive.google.com" in url:
|
||||||
|
file_id = extract_google_drive_file_id(url)
|
||||||
|
if file_id:
|
||||||
|
# Convert to direct download URL
|
||||||
|
url = f"https://drive.google.com/uc?export=download&id={file_id}"
|
||||||
|
LOG.info("Converting Google Drive link to direct download", url=url)
|
||||||
|
|
||||||
# Check if URL is an S3 URI
|
# Check if URL is an S3 URI
|
||||||
if url.startswith(f"s3://{settings.AWS_S3_BUCKET_UPLOADS}/{settings.ENV}/o_"):
|
if url.startswith(f"s3://{settings.AWS_S3_BUCKET_UPLOADS}/{settings.ENV}/o_"):
|
||||||
LOG.info("Downloading Skyvern file from S3", url=url)
|
LOG.info("Downloading Skyvern file from S3", url=url)
|
||||||
|
|||||||
Reference in New Issue
Block a user