]> git.parisson.com Git - teleforma.git/commitdiff
blacked
authorGuillaume Pellerin <guillaume.pellerin@parisson.com>
Sun, 17 Aug 2025 11:28:02 +0000 (13:28 +0200)
committerGuillaume Pellerin <guillaume.pellerin@parisson.com>
Sun, 17 Aug 2025 11:28:02 +0000 (13:28 +0200)
teleforma/management/commands/teleforma-import-conferences-2.py

index fc7fe0166bead0646ecd58aba33a55f009536582..09d3aa5123719513728fab796769657ead1da1e8 100644 (file)
@@ -12,9 +12,9 @@ class Logger:
     """A logging object"""
 
     def __init__(self, file):
-        self.logger = logging.getLogger('myapp')
+        self.logger = logging.getLogger("myapp")
         self.hdlr = logging.FileHandler(file)
-        self.formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
+        self.formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s")
         self.hdlr.setFormatter(self.formatter)
         self.logger.addHandler(self.hdlr)
         self.logger.setLevel(logging.INFO)
@@ -22,15 +22,16 @@ class Logger:
 
 class Command(BaseCommand):
     help = "Import conferences from the MEDIA_ROOT directory "
-    admin_email = 'webmaster@parisson.com'
-    args = 'organization log_file'
-    spacer = '_-_'
-    original_format = ['mp4']
-    transcoded_formats = ['mp3']
-    image_formats = ['png', 'jpg']
+    admin_email = "webmaster@parisson.com"
+    args = "organization log_file"
+    spacer = "_-_"
+    original_format = ["mp4"]
+    transcoded_formats = ["mp3"]
+    poster_formats = ["png", "jpg"]
+    track_formats = ["vtt"]
 
     def add_arguments(self, parser):
-        parser.add_argument('args', nargs='*')
+        parser.add_argument("args", nargs="*")
 
     def handle(self, *args, **options):
         organization_name = args[0]
@@ -39,9 +40,12 @@ class Command(BaseCommand):
         logger = Logger(log_file)
 
         organization = Organization.objects.get(name=organization_name)
-        department = Department.objects.get(name=department_name,
-                                            organization=organization)
-        self.media_dir = settings.MEDIA_ROOT + organization.name + os.sep + department_name
+        department = Department.objects.get(
+            name=department_name, organization=organization
+        )
+        self.media_dir = (
+            settings.MEDIA_ROOT + organization.name + os.sep + department_name
+        )
         file_list = []
         all_conferences = Conference.objects.all()
         i = 1
@@ -51,11 +55,12 @@ class Command(BaseCommand):
                 name = os.path.splitext(filename)[0]
                 ext = os.path.splitext(filename)[1][1:]
 
-                if ext \
-                    and (ext in self.original_format or ext in self.transcoded_formats) \
-                    and name[0] != '.' \
-                    and not "_2.webm" in name:
-
+                if (
+                    ext
+                    and (ext in self.original_format or ext in self.transcoded_formats)
+                    and name[0] != "."
+                    and not "_2.webm" in name
+                ):
                     root_list = root.split(os.sep)
                     public_id = root_list[-1]
                     course = root_list[-2]
@@ -69,8 +74,9 @@ class Command(BaseCommand):
 
                     if Conference.objects.filter(public_id=public_id) and department:
                         conference = Conference.objects.get(public_id=public_id)
-                        department = Department.objects.get(name=department_name,
-                                                            organization=organization)
+                        department = Department.objects.get(
+                            name=department_name, organization=organization
+                        )
                         exist = False
                         medias = conference.media.all()
                         for media in medias:
@@ -80,7 +86,9 @@ class Command(BaseCommand):
 
                         streaming = False
                         try:
-                            stations = conference.station.filter(started=True, public_id=public_id)
+                            stations = conference.station.filter(
+                                started=True, public_id=public_id
+                            )
                             if stations:
                                 streaming = True
                         except:
@@ -99,26 +107,27 @@ class Command(BaseCommand):
 
                             files = os.listdir(root)
 
-                            # POSTER
-
-                            # prefer self image
+                            # poster & track files
                             for file in files:
                                 filename, extension = os.path.splitext(file)
-                                if extension[1:] in self.image_formats and filename in path:
+                                if (
+                                    extension[1:] in self.poster_formats
+                                    and filename in path
+                                    and not "_2.webm" in filename
+                                    and not media.poster_file
+                                ):
                                     media.poster_file = dir + os.sep + file
+                                if (
+                                    extension[1:] in self.track_formats
+                                    and filename in path
+                                    and not "_2.webm" in filename
+                                    and not media.track_file
+                                ):
+                                    media.track_file = dir + os.sep + file
                                     break
 
-                            # otherwise use image from video 0
-                            if not media.poster_file:
-                                for file in files:
-                                    filename, extension = os.path.splitext(file)
-                                    if extension[1:] in self.image_formats and not "_2.webm" in filename:
-                                        media.poster_file = dir + os.sep + file
-                                        break
-
                             media.save()
                             conference.save()
 
                             logger.logger.info(path)
                             i += 1
-