diff --git a/website/models.py b/website/models.py index ec88531ff2..6a8a7e1e82 100644 --- a/website/models.py +++ b/website/models.py @@ -18,7 +18,6 @@ from django.contrib.contenttypes.models import ContentType from django.core.cache import cache from django.core.exceptions import ValidationError -from django.core.files.base import ContentFile from django.core.files.storage import default_storage from django.core.validators import MaxValueValidator, MinValueValidator, URLValidator from django.db import models, transaction @@ -299,16 +298,13 @@ def get_name(self): def get_logo(self): if self.logo: return self.logo.url - image_request = requests.get("https://logo.clearbit.com/" + self.name) - try: - if image_request.status_code == 200: - image_content = ContentFile(image_request.content) - self.logo.save(self.name + ".jpg", image_content) - return self.logo.url - - except: - favicon_url = self.url + "/favicon.ico" - return favicon_url + # Use Google's favicon service as a free alternative to Clearbit + # Extract domain from URL for better compatibility + parsed_url = urlparse(self.url if "://" in self.url else f"http://{self.url}") + domain = parsed_url.netloc or self.name + # Google favicon service with 128px size for better quality + favicon_url = f"https://www.google.com/s2/favicons?domain={domain}&sz=128" + return favicon_url @property def hostname_domain(self):