Ejemplo n.º 1
0
    def from_file(path, query, duration=None):
        media_type = guess_type(path)

        if media_type is MEDIA_TYPE_VIDEO:
            if duration is None: duration = get_video_duration(path)
            tmp = create_temporary_file(".snap.mp4")
            output_path = tmp.name
            subprocess.Popen(["ffmpeg", "-y", "-i", path, output_path]).wait()

        elif media_type is MEDIA_TYPE_IMAGE:
            image = Image.open(path)

            draw = ImageDraw.Draw(image)
            font = ImageFont.truetype("aller-font.ttf", 28)
            draw.text((10, 10),
                      'Name:' + query['title'] + ' Artist:' + query['artist'],
                      (255, 0, 0),
                      font=font)
            del draw

            tmp = create_temporary_file(".jpg")
            output_path = tmp.name
            resize_image(image, output_path)
            if not duration:
                duration = DEFAULT_DURATION

        else:
            raise UnknownMediaType(
                "Could not determine media type of the file")

        return Snap(path=output_path, media_type=media_type, duration=duration)
Ejemplo n.º 2
0
    def from_model(cls, model_object, base_source=None):
        """Creates and returns a new data source from a given model

        :param model_object: The instance of a model as obtained from the 
                             `trytond.pool.Pool`
        :param base_source: The base_source to inherit from. Must be an 
                            instance of :class:`BaseSource`
        """
        assert isinstance(model_object, ModelSQL), \
            "model_object must be an instance of ModelSQL"
        if base_source:
            assert isinstance(base_source, BaseSource), \
                "base_source must be an instance of BaseSource (got %s)" % type(
                    base_source)

        attributes = {}
        for name, field in model_object._columns.iteritems():
            if field.select != 1:
                continue
            try:
                attributes[name] = guess_type(field)
            except ValueError:
                # Ignore if a value error is raised because its a field which
                # sphinx doesnt know the proper type for conversion
                continue

        sql_query = ""
        sql_query_range = 'SELECT MIN(id),MAX(id) FROM "%s"' \
            % model_object._table

        if attributes:
            # Construct the SQL query if attributes do exist
            sql_query = ['SELECT "%s"."id" AS "id",' % model_object._table]
            sql_query.append(", ".join([
                '"%s"."%s" AS "%s"' % (model_object._table, name, name) \
                    for name in attributes.keys()
                ]))
            sql_query.append('FROM "%s"' % model_object._table)
            sql_query.extend([
                'WHERE',
                '"%s"."id" >= $start' % model_object._table,
                'AND',
                '"%s"."id" <= $end' % model_object._table,
            ])

        # Build the data source name
        data_source_name = model_object._table
        if base_source:
            data_source_name = "%s : %s" % (data_source_name, base_source.name)

        # Create a new instance of Data Source with the data we have
        return cls(
            name=data_source_name,
            sql_query=' '.join(sql_query),
            attributes=attributes,
            sql_query_range=sql_query_range,
        )
Ejemplo n.º 3
0
    def from_file(path, duration=None):
        media_type = guess_type(path)

        if media_type is MEDIA_TYPE_VIDEO:
            if duration is None: duration = get_video_duration(path)
            tmp = create_temporary_file(".snap.mp4")
            output_path = tmp.name
            subprocess.Popen(["ffmpeg", "-y", "-i", path, output_path]).wait()

        elif media_type is MEDIA_TYPE_IMAGE:
            image = Image.open(path)
            tmp = create_temporary_file(".jpg")
            output_path = tmp.name
            resize_image(image, output_path)
            if duration is None: duration = DEFAULT_DURATION

        else:
            raise Exception, "Could not determine media type of the file"

        return Snap(path=output_path, media_type=media_type, duration=duration)
Ejemplo n.º 4
0
    def from_file(path, duration = None):
        media_type = guess_type(path)

        if media_type is MEDIA_TYPE_VIDEO:
            if duration is None: duration = get_video_duration(path)
            tmp = create_temporary_file(".snap.mp4")
            output_path = tmp.name
            subprocess.Popen(["ffmpeg", "-y", "-i", path, output_path]).wait()

        elif media_type is MEDIA_TYPE_IMAGE:
            image = Image.open(path)
            tmp = create_temporary_file(".jpg")
            output_path = tmp.name
            resize_image(image, output_path)
            if duration is None: duration = DEFAULT_DURATION

        else:
            raise Exception, "Could not determine media type of the file"

        return Snap(path = output_path, media_type = media_type, duration = duration)