Easier cutting.
[audio.git] / src / youtube / tasks.py
index f58df0a..d7ca67e 100644 (file)
@@ -1,3 +1,4 @@
+import os
 from archive.tasks import AudioFormatTask
 from .models import YouTube
 
 from archive.tasks import AudioFormatTask
 from .models import YouTube
 
@@ -6,11 +7,32 @@ class YouTubeTask(AudioFormatTask):
     ext = 'mkv'
     prefix = 'youtube'
 
     ext = 'mkv'
     prefix = 'youtube'
 
-    def encode(self, in_path, out_path):
-        YouTube.objects.first().prepare_file(in_path, out_path)
+    def encode(self, in_paths, out_path):
+        self.audiobook.project.youtube.prepare_file(in_paths, out_path)
 
     def set_tags(self, audiobook, filename):
         pass
 
 
     def set_tags(self, audiobook, filename):
         pass
 
+    @classmethod
+    def save(cls, audiobook, file_name):
+        """We do not save the video files."""
+        os.unlink(file_name)
+
     def put(self, user, audiobook, filename):
     def put(self, user, audiobook, filename):
-        YouTube.objects.first().publish(audiobook, filename)
+        audiobook.project.youtube.publish(audiobook, filename)
+
+    def get_source_file_paths(self, audiobook):
+        if not audiobook.youtube_volume:
+            paths = [audiobook.source_file.path]
+        else:
+            paths = [
+                a.source_file.path
+                for a in type(audiobook)
+                .objects.filter(
+                    slug=audiobook.slug, youtube_volume=audiobook.youtube_volume
+                )
+                .order_by("index")
+            ]
+        if audiobook.project.info_flac:
+            paths.append(audiobook.project.info_flac.path)
+        return paths