def generate_versions(self): meta = metadata(self.file.path) size = int(meta.get("size")[1]) if meta.get("size") is not None else None if size is None: return for s in VideoVersion.SIZES: if int(s[0]) <= size: if not self.video_versions.filter(type=VideoVersion.TYPES.webm, size=s[0]).exists(): try: retcode, tmp_file = webm(self.file.path, s[0]) except Exception, CalledProcessError: retcode = 1 version = VideoVersion(video=self, type=VideoVersion.TYPES.webm, size=s[0]) if retcode == 0: version.status = VideoVersion.STATUSES.ready f = open(tmp_file, "r") version.file.save("%s.%s.webm" % (self.pk, s[0]), ContentFile(f.read()), save=False) f.close() os.remove(tmp_file) else: version.status = VideoVersion.STATUSES.failed version.save() break
def handle(self, *args, **options): for video in Video.objects.all(): video.video_versions.all().delete() video.thumbnails.all().delete() meta = metadata(video.file.path) video_date = meta.get('date') if video_date is not None: video.date = video_date video.generate_versions() video.generate_thumbnails() print "done %s" % video.pk
def save(self, *args, **kwargs): if self._state.adding: self.meta_date = getattr(metadata(self.file.path), "date") super(Video, self).save(*args, **kwargs)