From 428903acfd2f7bb43440dfba4e75a35bfec6532b Mon Sep 17 00:00:00 2001 From: bkfox Date: Sat, 21 May 2022 13:35:19 +0200 Subject: [PATCH 1/2] gettext usage --- aircox_streamer/urls.py | 2 +- aircox_streamer/views.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/aircox_streamer/urls.py b/aircox_streamer/urls.py index 7724652..c3014b5 100644 --- a/aircox_streamer/urls.py +++ b/aircox_streamer/urls.py @@ -1,5 +1,5 @@ from django.contrib import admin -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from . import viewsets from aircox.viewsets import SoundViewSet diff --git a/aircox_streamer/views.py b/aircox_streamer/views.py index ad8d2dd..e71b386 100644 --- a/aircox_streamer/views.py +++ b/aircox_streamer/views.py @@ -1,4 +1,4 @@ -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.views.generic import TemplateView from aircox.views.admin import AdminMixin -- 2.30.2 From f92aa8d1b24675c48b5a6bf65ebdd39a12708524 Mon Sep 17 00:00:00 2001 From: bkfox Date: Sat, 21 May 2022 14:48:04 +0200 Subject: [PATCH 2/2] find_playlist was not called under some circonstances --- aircox/admin/sound.py | 19 ++++++++++--- aircox/management/commands/sounds_monitor.py | 27 +++++++++++-------- .../management/commands/streamer.py | 5 ++-- 3 files changed, 35 insertions(+), 16 deletions(-) diff --git a/aircox/admin/sound.py b/aircox/admin/sound.py index 7dff945..34012de 100644 --- a/aircox/admin/sound.py +++ b/aircox/admin/sound.py @@ -1,3 +1,5 @@ +import math + from django.contrib import admin from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ @@ -29,7 +31,7 @@ class SoundInline(admin.TabularInline): def audio(self, obj): return mark_safe(''.format(obj.file.url)) - audio.short_descripton = _('Audio') + audio.short_description = _('Audio') def get_queryset(self, request): return super().get_queryset(request).available() @@ -60,7 +62,7 @@ class SoundAdmin(admin.ModelAdmin): def audio(self, obj): return mark_safe(''.format(obj.file.url)) - audio.short_descripton = _('Audio') + audio.short_description = _('Audio') @admin.register(Track) @@ -68,7 +70,7 @@ class TrackAdmin(admin.ModelAdmin): def tag_list(self, obj): return u", ".join(o.name for o in obj.tags.all()) - list_display = ['pk', 'artist', 'title', 'tag_list', 'episode', 'sound', 'timestamp'] + list_display = ['pk', 'artist', 'title', 'tag_list', 'episode', 'sound', 'ts'] list_editable = ['artist', 'title'] list_filter = ['artist', 'title', 'tags'] @@ -80,4 +82,15 @@ class TrackAdmin(admin.ModelAdmin): # TODO on edit: readonly_fields = ['episode', 'sound'] + def ts(self, obj): + ts = obj.timestamp + if ts is None: + return '' + h = math.floor(ts / 3600) + m = math.floor((ts - h) / 60) + s = ts-h*3600-m*60 + return '{:0>2}:{:0>2}:{:0>2}'.format(h,m,s) + + ts.short_description = _('timestamp') + diff --git a/aircox/management/commands/sounds_monitor.py b/aircox/management/commands/sounds_monitor.py index 6810c87..b3e9a15 100755 --- a/aircox/management/commands/sounds_monitor.py +++ b/aircox/management/commands/sounds_monitor.py @@ -105,8 +105,9 @@ class SoundFile: self.find_episode(program) sound.save() - if self.info is not None: - self.find_playlist(sound) + + # check for playlist + self.find_playlist(sound) return sound def read_path(self): @@ -175,12 +176,12 @@ class SoundFile: """ if sound is None: sound = self.sound - - if sound.track_set.count(): + if sound.track_set.count() > 1: return # import playlist - path = os.path.splitext(self.sound.file.path)[0] + '.csv' + path_noext, ext = os.path.splitext(self.sound.file.path) + path = path_noext + '.csv' if os.path.exists(path): PlaylistImport(path, sound=sound).run() # use metadata @@ -189,14 +190,18 @@ class SoundFile: self.read_file_info() if self.info.tags: tags = self.info.tags - info = '{} ({})'.format(tags.get('album'), tags.get('year')) \ - if ('album' and 'year' in tags) else tags.get('album') \ - if 'album' in tags else tags.get('year', '') - + title, artist, album, year = tuple( + t and ', '.join(t) for t in ( + tags.get(k) for k in ('title', 'artist', 'album', 'year')) + ) + title = title or (self.path_info and self.path_info.get('name')) or \ + os.path.basename(path_noext) + info = '{} ({})'.format(album, year) if album and year else \ + album or year or '' track = Track(sound=sound, position=int(tags.get('tracknumber', 0)), - title=tags.get('title', self.path_info['name']), - artist=tags.get('artist', _('unknown')), + title=title, + artist=artist or _('unknown'), info=info) track.save() diff --git a/aircox_streamer/management/commands/streamer.py b/aircox_streamer/management/commands/streamer.py index a9b3801..ed64d1d 100755 --- a/aircox_streamer/management/commands/streamer.py +++ b/aircox_streamer/management/commands/streamer.py @@ -126,12 +126,13 @@ class Monitor: def log(self, **kwargs): """ Create a log using **kwargs, and print info """ + kwargs.setdefault('station', self.station) + kwargs.setdefault('date', tz.now()) + if self.__last_log_kwargs == kwargs: return self.__last_log_kwargs = kwargs - kwargs.setdefault('station', self.station) - kwargs.setdefault('date', tz.now()) log = Log(**kwargs) log.save() log.print() -- 2.30.2