예제 #1
0
def encode_video_task(video_url, username='', profiles=video_encoder.VIDEO_ENCODING_PROFILES.keys(), queues={}, redo=False):
    default_queue = default_queues.copy()
    for profile, queue in queues.items():
        default_queue['item'] = queue

    file_path = None
    for profile_name in profiles:
        if redo or not video_db.video_already_encoded(video_url=video_url, video_quality=profile_name, recent_assigned=True):
            if not file_path:
                file_path = media_uploader.download_file(video_url)
            log_id = video_db.add_video_encode_log_start(video_url=video_url, video_quality=profile_name)
            if redo:
                _try_video_again(video_url, username, profiles)

            _encode_video_to_profile.apply_async(kwargs={'file_path': file_path,
                                                         'video_url': video_url,
                                                         'profile': profile_name,
                                                         'log_id': log_id,
                                                         'username': username
                                                         },
                                                 queue=default_queue[profile_name]
                                                 )
        else:
            print 'Already Done'
    db.engine.dispose()
예제 #2
0
def _encode_video_to_profile(file_path, video_url, profile, log_id, username=''):
    if video_db.video_already_encoded(video_url=video_url, video_quality=profile):
        print 'Not Retrying now.'
        return
    result = video_encoder.encode_video_to_profile(file_path, video_url, profile, username)
    video_db.update_video_encode_log_finish(log_id, result)
    video_db.update_video_state(video_url, result)

    #if low was not made make try for medium
    if profile == 'low' and not result:
        log_id = video_db.add_video_encode_log_start(video_url=video_url, video_quality='medium')
        _encode_video_to_profile(file_path, video_url, 'medium', log_id, username=username)

    if result:
        try:
            post_id = video_db.get_post_id_from_video(video_url)
            if post_id:
                notification.post_notifications(post_id)
        except Exception as e:
            err = sys.exc_info()
            raygun.send(err[0], err[1], err[2])
            print traceback.format_exc(e)

    #Post to facebook hook

    if result:
        try:
            post_id = video_db.get_post_id_from_video(video_url)
            if post_id:
                post = Post.query.filter(Post.id==post_id).one()
                question = Question.query.filter(Question.id==post.question)
                user = User.query.filter(User.id == post.answer_author)

                redis_key = str(user.id)+'_'+str(question.id)

                perms_data = redis_post_perms.get(redis_key)
                if perms_data:
                    permissions = json.loads(perms_data)
            if post_id and permissions.get('post_facebook') and user.facebook_write_permission:
                message = "I just answered a question on FranklyMe"
                post_name = "Frankster's Answer"
                post_link = 'www.frankly.me/p/{0}'.format(question.short_id)
                post_caption = "Question Answered by {0}".format(user.first_name)
                post_description = "Question : {0}".format(question.body)
                post_picture = post.thumbnail_url
                access_token = user.facebook_token
                publish_to_facebook(message, post_name, post_link, post_caption, post_description, post_picture, access_token = access_token)
                #post response to facebook
        except Exception as e:
            err = sys.exc_info()
            raygun.send(err[0], err[1], err[2])
            print traceback.format_exc(e)

    db.engine.dispose()