Update main.py
This commit is contained in:
parent
528ea0848f
commit
19da1d5c0e
1 changed files with 43 additions and 2 deletions
45
main.py
45
main.py
|
@ -64,6 +64,34 @@ def extract_and_fix_urls(text):
|
||||||
|
|
||||||
return fixed_urls
|
return fixed_urls
|
||||||
|
|
||||||
|
def get_imgur_url(imgur_url):
|
||||||
|
try:
|
||||||
|
# Handle album URLs
|
||||||
|
if '/a/' in imgur_url:
|
||||||
|
response = requests.get(imgur_url, timeout=10)
|
||||||
|
response.raise_for_status()
|
||||||
|
# Extract all image URLs from the album page
|
||||||
|
image_urls = re.findall(r'https://i\.imgur\.com/\w+\.(?:jpg|png|gif|mp4)', response.text)
|
||||||
|
return image_urls if image_urls else None
|
||||||
|
|
||||||
|
# Handle single image/video URLs
|
||||||
|
response = requests.get(imgur_url, timeout=10)
|
||||||
|
response.raise_for_status()
|
||||||
|
content = response.text
|
||||||
|
|
||||||
|
# Try to find direct image/video URL in the page source
|
||||||
|
match = re.search(r'https://i\.imgur\.com/\w+\.(?:jpg|png|gif|mp4)', content)
|
||||||
|
if match:
|
||||||
|
return match.group(0)
|
||||||
|
|
||||||
|
# If direct URL not found, construct it from the imgur ID
|
||||||
|
imgur_id = imgur_url.split('/')[-1]
|
||||||
|
return f'https://i.imgur.com/{imgur_id}.jpg'
|
||||||
|
|
||||||
|
except requests.exceptions.RequestException:
|
||||||
|
pass # Silently handle the error
|
||||||
|
return None
|
||||||
|
|
||||||
def get_tenor_gif_url(tenor_url):
|
def get_tenor_gif_url(tenor_url):
|
||||||
try:
|
try:
|
||||||
response = requests.get(tenor_url, timeout=10)
|
response = requests.get(tenor_url, timeout=10)
|
||||||
|
@ -115,8 +143,19 @@ def safe_filename(filename, max_length=200):
|
||||||
def download_media(url):
|
def download_media(url):
|
||||||
global successful_downloads, failed_downloads
|
global successful_downloads, failed_downloads
|
||||||
try:
|
try:
|
||||||
if url.lower().endswith(SUPPORTED_EXTENSIONS):
|
if 'imgur.com' in url:
|
||||||
direct_url = url
|
imgur_urls = get_imgur_url(url)
|
||||||
|
if imgur_urls:
|
||||||
|
if isinstance(imgur_urls, list): # It's an album
|
||||||
|
for imgur_url in imgur_urls:
|
||||||
|
download_media(imgur_url) # Recursive call for each image in the album
|
||||||
|
return
|
||||||
|
else: # Single image/video
|
||||||
|
direct_url = imgur_urls
|
||||||
|
else:
|
||||||
|
failed_downloads += 1
|
||||||
|
error_summary["Imgur URL skipped"].append(url)
|
||||||
|
return
|
||||||
elif 'tenor.com' in url:
|
elif 'tenor.com' in url:
|
||||||
gif_url = get_tenor_gif_url(url)
|
gif_url = get_tenor_gif_url(url)
|
||||||
if gif_url:
|
if gif_url:
|
||||||
|
@ -125,6 +164,8 @@ def download_media(url):
|
||||||
failed_downloads += 1
|
failed_downloads += 1
|
||||||
error_summary["Tenor URL skipped"].append(url)
|
error_summary["Tenor URL skipped"].append(url)
|
||||||
return
|
return
|
||||||
|
elif url.lower().endswith(SUPPORTED_EXTENSIONS):
|
||||||
|
direct_url = url
|
||||||
else:
|
else:
|
||||||
direct_url = url
|
direct_url = url
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue