Increase episode number calculation speed
This commit is contained in:
1 parent
93ad397c05
commit
487e801151
1 file changed
+27
-9
+27
-9
@@ -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()
|
||||
|
||||
Reference in new issue
Block a user