diff --git a/apps/m3u/models.py b/apps/m3u/models.py index cc84d768..25a332c6 100644 --- a/apps/m3u/models.py +++ b/apps/m3u/models.py @@ -5,6 +5,7 @@ import re from django.dispatch import receiver from apps.channels.models import StreamProfile from django_celery_beat.models import PeriodicTask +from core.models import CoreSettings, UserAgent CUSTOM_M3U_ACCOUNT_NAME="custom" @@ -100,6 +101,13 @@ class M3UAccount(models.Model): def get_custom_account(cls): return cls.objects.get(name=CUSTOM_M3U_ACCOUNT_NAME, locked=True) + def get_user_agent(self): + user_agent = self.user_agent + if not user_agent: + user_agent = UserAgent.objects.get(id=CoreSettings.get_default_user_agent_id()) + + return user_agent + # def get_channel_groups(self): # return ChannelGroup.objects.filter(m3u_account__m3u_account=self) diff --git a/apps/m3u/tasks.py b/apps/m3u/tasks.py index 5db25e2a..8a8aa7f1 100644 --- a/apps/m3u/tasks.py +++ b/apps/m3u/tasks.py @@ -35,7 +35,8 @@ def fetch_m3u_lines(account, use_cache=False): """Fetch M3U file lines efficiently.""" if account.server_url: if not use_cache or not os.path.exists(file_path): - headers = {"User-Agent": account.user_agent.user_agent} + user_agent = account.get_user_agent() + headers = {"User-Agent": user_agent.user_agent} logger.info(f"Fetching from URL {account.server_url}") try: response = requests.get(account.server_url, headers=headers, stream=True)