Increase episode number calculation speed

This commit is contained in:
tcely authored and GitHub committed 2025-03-13 03:23:27 -04:00
1 parent 93ad397c05
commit 487e801151
1 file changed
+27 -9
+27 -9
View File
@@ -1507,17 +1507,35 @@ class Media(models.Model):
def calculate_episode_number(self):
if self.source.is_playlist:
sorted_media = Media.objects.filter(source=self.source)
sorted_media = Media.objects.filter(
source=self.source,
metadata__isnull=False,
).order_by(
'published',
'created',
'key',
)
else:
self_year = self.upload_date.year if self.upload_date else self.created.year
filtered_media = Media.objects.filter(source=self.source, published__year=self_year)
filtered_media = [m for m in filtered_media if m.upload_date is not None]
sorted_media = sorted(filtered_media, key=lambda x: (x.upload_date, x.key))
position_counter = 1
for media in sorted_media:
self_year = self.created.year # unlikely to be accurate
if self.published:
self_year = self.published.year
elif self.has_metadata and self.upload_date:
self_year = self.upload_date.year
elif self.download_date:
# also, unlikely to be accurate
self_year = self.download_date.year
sorted_media = Media.objects.filter(
source=self.source,
metadata__isnull=False,
published__year=self_year,
).order_by(
'published',
'created',
'key',
)
for counter, media in enumerate(sorted_media, start=1):
if media == self:
return position_counter
position_counter += 1
return counter
def get_episode_str(self, use_padding=False):
episode_number = self.calculate_episode_number()