Пример #1
0
def start_converting(youtube_id,
                     gcs_url,
                     formats_to_create,
                     base_url=BASE_URL):

    # TODO(csilvers): figure out how to get thumbnail times from youtube APIv3
    #thumbnail_time = youtube.get_thumbnail_time(youtube_id)
    thumbnail_time = None

    zen = Zencoder(zencoder_api_key)
    outputs = []

    for format_to_create in formats_to_create:
        assert format_to_create in output_types(), (format_to_create,
                                                    output_types())
        outputs += [
            fxn(youtube_id, thumbnail_time, base_url)
            for fxn in output_types()[format_to_create]
        ]

    job_response = zen.job.create(gcs_url, outputs=outputs)

    assert job_response.code == 201, job_response.body

    logger.info("Zencoder job created successfully")
Пример #2
0
    def schedule_zencoder_job(self):
        zen = Zencoder("7f188a0403a4caac59d8a0080015cae9", api_version = "v2", as_xml = False, test = True)

        output = {}
        output["url"] = "s3://nandotorres/%s.%s" % (self.file.name.split("/")[-1], self.formato)
        output["base_url"] = "s3://nandotorres/"
        output["format"]   = self.formato
        output["public"] = 1
        output["notifications"] = [{ "url": ("%s/notify/%s" % (settings.SITE_URL, self.id)) }]
    
        job = zen.job.create("s3://nandotorres/videos/" + self.file.name, output)
    
        return job
Пример #3
0
    def _config_encoding_backend(self):
        # Encoding backend
        if self.config['ENCODING_BACKEND'] != 'zencoder':
            self.log.warning(
                'Encoding backend %r not supported, no video encoding possible!',
                self.config['ENCODING_BACKEND'])
            return

        self.log.info('Setting up video encoding backend %r',
                      self.config['ENCODING_BACKEND'])

        from zencoder import Zencoder
        self.encoding_service_client = Zencoder(
            self.config['ZENCODER_API_KEY'])
 def execute(self):
     client = Zencoder(API_KEY)
     jobContext = self.job.getJobDescription()['output']
     uniquePath = WEBHOOK_PATH.replace("{jobid}", str(self.job.getId()))
     responseWebhook = WEBHOOK_ORIGIN + uniquePath
     response = client.job.create(self.job.getSrc(),
                                  outputs=(jobContext),
                                  options={
                                      "credentials": CREDENTIAL_NAME,
                                      "notifications": [responseWebhook]
                                  })
     if response.code == ZENCODER.RESPONSE_SUCCESS.value:
         return response.body['id']
     else:
         return -1
Пример #5
0
def start_zencoder_job(video_id):
    vid = Video.objects.get(video_id=video_id)
    logger = start_zencoder_job.get_logger()
    logger.info('Uploading %s: %s' % (vid.filename, vid.fp_url))

    directory = vid.fp_url.split('/')[-1]
    base_dir = DIRECTORY % (directory)
    mp4_file = MP4 % (directory)
    webm_file = WEBM % (directory)
    client = Zencoder(settings.ZENCODER_API_KEY)
    dimensions = '700x395'

    response = client.job.create(vid.fp_url,
                                 outputs=[{
                                     'size': dimensions,
                                     'base_url': base_dir,
                                     'filename': mp4_file,
                                     'public': True,
                                     'aspect_mode': 'pad'
                                 }, {
                                     'size': dimensions,
                                     'base_url': base_dir,
                                     'filename': webm_file,
                                     'public': True,
                                     'aspect_mode': 'pad'
                                 }, {
                                     "notifications": [{
                                         "url":
                                         settings.ZENCODER_WEBHOOK_URL
                                     }],
                                     "thumbnails": [{
                                         'number': 5,
                                         'size': '700x435',
                                         'public': True,
                                         'label': 'poster',
                                         'base_url': base_dir,
                                         'aspect_mode': 'pad'
                                     }]
                                 }])
    vid.job_id = response.body.get('id', 0)
    vid.save()
    if response.code != 201 or vid.job_id == 0:
        logger.info('Error uploading %s: %s' % (vid.filename, vid.fp_url))
Пример #6
0
def client():
    return Zencoder(settings.ZENCODER_API_KEY)
Пример #7
0
 def test_set_api_edge_version(self):
     os.environ['ZENCODER_API_KEY'] = 'abcd123'
     zc = Zencoder(api_version='edge')
     self.assertEquals(zc.base_url, 'https://app.zencoder.com/api/')
Пример #8
0
    def test_set_cert_path(self):
        api_key = 'testapikey'
        cert = '/path/to/cert.pem'
        zc = Zencoder(api_key=api_key, cert=cert)

        self.assertEquals(zc.job.requests_params['cert'], cert)
Пример #9
0
# Algolia search
if 'ALGOLIA_USER' in app.config:
    from algoliasearch import algoliasearch

    client = algoliasearch.Client(app.config['ALGOLIA_USER'],
                                  app.config['ALGOLIA_API_KEY'])
    algolia_index_users = client.init_index(app.config['ALGOLIA_INDEX_USERS'])
    algolia_index_nodes = client.init_index(app.config['ALGOLIA_INDEX_NODES'])
else:
    algolia_index_users = None
    algolia_index_nodes = None

# Encoding backend
if app.config['ENCODING_BACKEND'] == 'zencoder':
    encoding_service_client = Zencoder(app.config['ZENCODER_API_KEY'])
else:
    encoding_service_client = None

from utils.authentication import validate_token
from utils.authorization import check_permissions
from utils.activities import notification_parse
from modules.projects import before_inserting_projects
from modules.projects import after_inserting_projects


@app.before_request
def validate_token_at_every_request():
    validate_token()

Пример #10
0
    def test_set_proxies(self):
        api_key = 'testapikey'
        proxies = {'https': 'https://10.10.1.10:1080'}
        zc = Zencoder(api_key=api_key, proxies=proxies)

        self.assertEquals(zc.job.requests_params['proxies'], proxies)
Пример #11
0
    def test_set_verify_false(self):
        api_key = 'testapikey'
        zc = Zencoder(api_key=api_key, verify=False)

        self.assertEquals(zc.job.requests_params['verify'], False)
Пример #12
0
 def test_set_base_url(self):
     os.environ['ZENCODER_API_KEY'] = 'abcd123'
     zc = Zencoder(base_url='https://localhost:800/foo/')
     self.assertEquals(zc.base_url, 'https://localhost:800/foo/')
Пример #13
0
    def test_set_timeout(self):
        api_key = 'testapikey'
        zc = Zencoder(api_key=api_key, timeout=999)

        self.assertEquals(zc.job.requests_params['timeout'], 999)
Пример #14
0
def check_zencoder_progress(job_id):
    client = Zencoder(settings.ZENCODER_API_KEY)

    # Get file details.
    details_response = client.job.details(job_id)
    response_dict = details_response.__dict__

    response_body = response_dict.get('body', None)
    if not response_body:
        return

    job = response_body.get('job', None)
    if not job:
        return

    if job:
        input_file = job.get('input_media_file', None)
        output_files = job.get('output_media_files', list())
        thumbnails = job.get('thumbnails', list())
        mp4_url = None
        webm_url = None

        if not input_file:
            return

        for output in output_files:
            url = output.get('url', '')
            if url.startswith('http://'):
                url = url.replace('http://', 'https://')
            if url.endswith('.mp4'):
                mp4_url = url
            elif url.endswith('.webm'):
                webm_url = url
            else:
                pass

        if webm_url is None and mp4_url is None:
            return

        # Update video attributes.
        duration = input_file.get('duration_in_ms', 0)
        if duration > 0:
            duration = duration / 1000

        video = Video.objects.get(job_id=job_id)
        video.processing = False
        video.duration = duration
        video.webm_url = webm_url
        video.mp4_url = mp4_url
        video.save()

        # Save video poster images.
        for thumb in thumbnails:
            if thumb.get('url', None):
                t = Thumbnail()
                t.url = thumb.get('url')
                t.video = video
                if t.url.startswith('http://'):
                    t.url = t.url.replace('http://', 'https://')
                t.save()

        # Add UserVideo entry.
        user_video = UserVideo()
        user_video.user = video.added_by
        user_video.video = video
        user_video.is_featured = False
        user_video.save()

        action.send(video.added_by,
                    verb='added video to library',
                    action_object=video,
                    target=user_video)

        # Reset Video job id, so we don't receive duplicate uploads.
        video.job_id = None
        video.save()
Пример #15
0
 def test_default_api_version(self):
     os.environ['ZENCODER_API_KEY'] = 'abcd123'
     zc = Zencoder()
     self.assertEquals(zc.base_url, 'https://app.zencoder.com/api/v2/')
Пример #16
0
 def test_api_key_env_var(self):
     """ tests the ZENOCODER_API_KEY environment var """
     os.environ['ZENCODER_API_KEY'] = 'abcd123'
     zc = Zencoder()
     self.assertEquals(zc.api_key, 'abcd123')
Пример #17
0
 def test_api_key(self):
     """ initialize zencoder object and test api key """
     api_key = 'testapikey'
     zc = Zencoder(api_key=api_key)
     self.assertEquals(zc.api_key, api_key)
 def setUp(self):
     self.zen = Zencoder(api_key=TEST_API_KEY)