demoss / src /engine /pixeldrain.py
Sanuja Seneviratne
Fix `/spdl` (refactor #460) (#488)
c67f649
#!/usr/bin/env python3
# coding: utf-8
# ytdlbot - pixeldrain.py
__author__ = "SanujaNS <sanujas@sanuja.biz>"
import tempfile
import pathlib
import re
from urllib.parse import urlparse
from engine.direct import DirectDownload
def pixeldrain_download(client, bot_message, url):
FILE_URL_FORMAT = "https://pixeldrain.com/api/file/{}?download"
USER_PAGE_PATTERN = re.compile(r"https://pixeldrain.com/u/(\w+)")
def _extract_file_id(url):
if match := USER_PAGE_PATTERN.match(url):
return match.group(1)
parsed = urlparse(url)
if parsed.path.startswith('/file/'):
return parsed.path.split('/')[-1]
raise ValueError("Invalid Pixeldrain URL format")
def _get_download_url(file_id):
return FILE_URL_FORMAT.format(file_id)
def _download(url):
try:
file_id = _extract_file_id(url)
download_url = _get_download_url(file_id)
ddl = DirectDownload(client, bot_message, download_url)
ddl.start()
except ValueError as e:
bot_message.edit_text(f"Download failed!❌\n\n`{e}`")
except Exception as e:
bot_message.edit_text(
f"Download failed!❌\nAn error occurred: {str(e)}\n"
"Please check your URL and try again."
)
_download(url)