예제 #1
0
파일: videos.py 프로젝트: divadrei/gallery
    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
예제 #2
0
 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
예제 #3
0
파일: videos.py 프로젝트: divadrei/gallery
    def save(self, *args, **kwargs):

        if self._state.adding:
            self.meta_date = getattr(metadata(self.file.path), "date")

        super(Video, self).save(*args, **kwargs)