예제 #1
0
파일: server.py 프로젝트: afrobeard/KTS
def kaltura_session_loader_base(kaltura_id, app, session, return_status=False):
    # Refresh Kaltura Session If not
    print "Current in session" + repr(session)

    if "ksessionkey" in session and session['kaltura_id'] == kaltura_id:
        print session.keys()
        print "I already have session"
        return create_session(kaltura_id, session["ksessionkey"])
    else:
        # if True:
        try:
            session['kaltura_id'] = kaltura_id
            kaltura_count = int(os.environ.get("KALTURA_INSTANCES", "1"))
            if kaltura_count >= 1:
                settings = properties.load_kaltura_settings().get(kaltura_id)
                session["ksessionkey"] = get_new_session_key(settings)
            else:
                settings = properties.load_kaltura_settings()
                session["ksessionkey"] = get_new_session_key(settings)
            return create_session(kaltura_id, session["ksessionkey"])
        except Exception as inst:
            inst = Exception
            # Error in Initiating session against Kaltura Server Session
            app.logger.warn(repr(inst))
            type, value, traceback = sys.exc_info()
            app.logger.warn(type)
            app.logger.warn(value)
            app.logger.warn(traceback)
            return "Unexpected error:" + "<p>" + repr(sys.exc_info()) + \
                   "</p>" if return_status else False
예제 #2
0
파일: server.py 프로젝트: hashimmm/KTS
def add_mobile_flavor_to_kts():
    g.msgs = []
    kaltura_id, entry_id = parse_ids()
    settings = properties.load_kaltura_settings().get(kaltura_id)
    if settings['MOBILE_PLAYER_FLAVOR']:
        g.msgs.append('Flavor already configured.')
        return simplejson.dumps({'success': True,
                                 'messages': g.msgs})
    client = kaltura_session_loader(kaltura_id)
    flavor_id = myKalturaObject.add_kts_mobile_flavor(client, kaltura_id)
    # flavor_id = "123"
    g.msgs.append("Added flavor to kaltura")
    myKalturaObject.add_flavor_to_default_conversion_profile(client,
                                                             flavor_id,
                                                             kaltura_id)
    g.msgs.append("Added flavor to default conversion profile")
    proplist = properties.kaltura_properties_list
    values = [settings[item] for item in proplist if
              not item == 'KALTURA_CONFIG_ID']
    values[8] = flavor_id
    resp = simplejson.loads(properties.update_kaltura(kaltura_id, values))
    if resp['success']:
        g.msgs.append('Set flavor id as mobile player flavor in local '
                    'configurations for kaltura id %s' % kaltura_id)
    else:
        g.msgs.append('Failed to assign flavor id in local configuration.')
    return simplejson.dumps({
        "flavor_id": flavor_id,
        "success": True,
        "messages": g.msgs
    })
예제 #3
0
파일: server.py 프로젝트: hashimmm/KTS
def get_thumb():
    kaltura_id, entry_id = parse_ids()
    settings = properties.load_kaltura_settings().get(kaltura_id)
    return render_template("thumbframe.html",
                           partner_id=settings['PARTNER_ID'],
                           entry_id=entry_id,
                           kaltura_local=settings['KALTURA_PATH'])
예제 #4
0
파일: server.py 프로젝트: afrobeard/KTS
def get_kaltura_thumbnail_player():
    try:
        kaltura_id, entry_id = parseIds(request.args, request.form)
        settings = properties.load_kaltura_settings().get(kaltura_id)
        cache_timestamp = int(time.time())
        success_callback = request.args.get('successCallback', None)
        success_callback_params = request.args.get('successCallbackParams', None)
        msgs = []
        callback = request.args.get('callback', None)
        callback = callback \
            and callback or \
            "/service/update_thumbnail_from_player?kaltura_id=" + kaltura_id

        if entry_id is None:
            msgs.append("Entry Id error")
            return simplejson.dumps({'success': False, 'messages': msgs})
        # kaltura_session_loader(session)
        #kclient = session.get("kclient", None)
        return render_template('thumbnail_player.html',
                               kaltura_local=settings['KALTURA_PATH'],
                               partner_id=settings['PARTNER_ID'],
                               player_id=settings['THUMBNAIL_PLAYER_ID'],
                               entry_id=entry_id,
                               cache_timestamp=cache_timestamp,
                               callback=callback,
                               success_callback=success_callback,
                               success_callback_params=success_callback_params,
                               parent_host=request.args.get('parent_host', None))
    except:
        return simplejson.dumps({'success': False,
                                 'messages': repr(sys.exc_info())})
예제 #5
0
파일: server.py 프로젝트: hashimmm/KTS
def get_kaltura_thumbnail_player():
    kaltura_id, entry_id = parse_ids()
    settings = properties.load_kaltura_settings().get(kaltura_id)
    cache_timestamp = int(time.time())
    success_callback = request.args.get('successCallback', None)
    success_callback_params = request.args.get('successCallbackParams',
                                               None)
    g.msgs = []
    callback = request.args.get('callback', None)
    callback = callback \
               and callback or \
               "/service/update_thumbnail_from_player?kaltura_id=" \
               + kaltura_id

    if entry_id is None:
        g.msgs.append("Entry Id error")
        return simplejson.dumps({'success': False, 'messages': g.msgs})
    # kaltura_session_loader(session)
    # kclient = session.get("kclient", None)
    return render_template('thumbnail_player.html',
                           kaltura_local=settings['KALTURA_PATH'],
                           partner_id=settings['PARTNER_ID'],
                           player_id=settings['THUMBNAIL_PLAYER_ID'],
                           entry_id=entry_id,
                           cache_timestamp=cache_timestamp,
                           callback=callback,
                           success_callback=success_callback,
                           success_callback_params=success_callback_params,
                           parent_host=request.args.get('parent_host',
                                                        None))
예제 #6
0
파일: server.py 프로젝트: afrobeard/KTS
def view_configs():
    props = properties.load_kaltura_settings()
    columns = ['id'] + props[props.keys()[0]].keys()
    data = [ [key] + props[key].values() for key in sorted(props.keys()) ]
    return render_template('kaltura_configs.html',
                            columns = columns,
                            data = data)
예제 #7
0
파일: server.py 프로젝트: hashimmm/KTS
def view_configs():
    props = properties.load_kaltura_settings()
    columns = ['id'] + list(props[list(props.keys())[0]].keys())
    data = [[key] + list(props[key].values())
            for key in sorted(list(props.keys()))]
    return render_template('kaltura_configs.html',
                           columns=columns,
                           data=data)
예제 #8
0
def add_kts_mobile_flavor(client, kaltura_id):
    payload = kts_mobile_flavor_payload.copy()
    payload['ks'] = client.getKs()
    settings = properties.load_kaltura_settings().get(kaltura_id)
    url = "%s/api_v3/" % settings['SERVICE_URL']
    data = urlencode(payload)
    req = urllib2.Request(url, data)
    response = urllib2.urlopen(req).read()
    contentxml = ET.fromstring(response)
    flavor_id = contentxml.find('./result/id').text
    return flavor_id
예제 #9
0
파일: server.py 프로젝트: afrobeard/KTS
def get_thumb():
    try:
        kaltura_id, entry_id = parseIds(request.args, request.form)
        settings = properties.load_kaltura_settings().get(kaltura_id)
        return render_template("thumbframe.html",
                               partner_id=settings['PARTNER_ID'],
                               entry_id=entry_id,
                               kaltura_local=settings['KALTURA_PATH'])
    except:
        return simplejson.dumps({'success': False,
                                 'messages': repr(sys.exc_info())})
예제 #10
0
def add_kts_mobile_flavor(client, kaltura_id):
    payload = kts_mobile_flavor_payload.copy()
    payload['ks'] = client.getKs()
    settings = properties.load_kaltura_settings().get(kaltura_id)
    url = "%s/api_v3/" % settings['SERVICE_URL']
    data = urlencode(payload)
    req = urllib2.Request(url, data)
    response = urllib2.urlopen(req).read()
    contentxml = ET.fromstring(response)
    flavor_id = contentxml.find('./result/id').text
    return flavor_id
예제 #11
0
파일: server.py 프로젝트: afrobeard/KTS
def get_kaltura_mobileplayer_url():
    kaltura_id, entry_id = parseIds(request.args, request.form)
    cache_timestamp = int(time.time())
    # kaltura_session_loader(session)
    #kclient = session.get("kclient", None)
    settings = properties.load_kaltura_settings().get(kaltura_id)
    return render_template('kaltura_mobileplayer.html',
                           kaltura_local=settings['KALTURA_PATH'],
                           partner_id=settings['PARTNER_ID'],
                           player_id=settings['PLAYER_ID'],
                           entry_id=entry_id,
                           cache_timestamp=cache_timestamp)
예제 #12
0
파일: server.py 프로젝트: hashimmm/KTS
def get_kaltura_player():
    kaltura_id, entry_id = parse_ids()
    settings = properties.load_kaltura_settings().get(kaltura_id)
    cache_timestamp = int(time.time())
    # kaltura_session_loader(session)
    # kclient = session.get("kclient", None)

    return render_template('kaltura_player.html',
                           kaltura_local=settings['KALTURA_PATH'],
                           partner_id=settings['PARTNER_ID'],
                           player_id=settings['PLAYER_ID'],
                           entry_id=entry_id, cache_timestamp=cache_timestamp)
예제 #13
0
def create_session(kaltura_id, ks=None):
    settings = properties.load_kaltura_settings().get(kaltura_id)
    if not settings:
        raise Exception("Kaltura ID %s Settings %s" % (kaltura_id, settings))
    client = KalturaClient(GetConfig(settings))
    if not settings:
        raise Exception("Kaltura ID %s not in session %s" %
                        (kaltura_id, repr(settings)))
    if not ks:
        ks = get_new_session_key(settings)
    client.setKs(ks)
    return client
예제 #14
0
def create_session(kaltura_id, ks=None):
    settings = properties.load_kaltura_settings().get(kaltura_id)
    if not settings:
        raise Exception("Kaltura ID %s Settings %s" % (kaltura_id, settings))
    client = KalturaClient(GetConfig(settings))
    if not settings:
        raise Exception("Kaltura ID %s not in session %s" % (
            kaltura_id, repr(settings)))
    if not ks:
        ks = get_new_session_key(settings)
    client.setKs(ks)
    return client
예제 #15
0
파일: server.py 프로젝트: afrobeard/KTS
def get_thumb_url():
    ''' you might want to remove the error checking from here later.
        (sends a GET for the image to check for error :D
        could also just attempt a get_media request.
        UPDATE: REMOVED THE ERROR CHECKING.)
        services should just use get_media and parse the json returned
        That json contains thumbnail url as well.
    '''
    # if True:
    try:
        # width = request.args.get('width', None)
        # height = request.args.get('height', None)
        kaltura_id, entry_id = parseIds(request.args, request.form)
        # settings = properties.load_kaltura_settings().get(kaltura_id)
        # if width and height:
        #     #response = urllib2.urlopen("http://" + settings['KALTURA_PATH']\
        #     #   + "/p/" + settings['PARTNER_ID'] + "/thumbnail/entry_id/" +\
        #     #   entry_id + "/width/" + width + "/height/" + height + "/")
        #     return simplejson.dumps({
        #         'success': True,
        #         'imageUrl': "http://" +
        #         settings['KALTURA_PATH'] +
        #         "/p/" + settings['PARTNER_ID'] +
        #         "/thumbnail/entry_id/" +
        #         entry_id + "/width/" +
        #         width + "/height/" + height + "/"})
        client = kaltura_session_loader(kaltura_id)
        default_thumb = thumbnail_get_default(client, entry_id)
        if not default_thumb is None:
            default_thumb['imageUrl'] = default_thumb['url']
            default_thumb['success'] = True
            return simplejson.dumps(default_thumb)
        else:
            settings = properties.load_kaltura_settings().get(kaltura_id)
            return simplejson.dumps({
                'success': True,
                'imageUrl': "http://" +
                settings['KALTURA_PATH'] +
                "/p/" + settings['PARTNER_ID'] +
                "/thumbnail/entry_id/" +
                entry_id + "/%s" % int(time.time())})
        # else:
        #     #response = urllib2.urlopen("http://" + settings['KALTURA_PATH']\
        #     #    + "/p/" + settings['PARTNER_ID'] + "/thumbnail/entry_id/" +\
        #     #     entry_id + "/")
        #     return simplejson.dumps({
        #         'success': True, 'imageUrl': "http://" +
        #         settings['KALTURA_PATH'] +
        #         "/p/" + settings['PARTNER_ID']
        #         + "/thumbnail/entry_id/" + entry_id + "/"})
    except:
        return simplejson.dumps({'success': False,
                                 'messages': repr(sys.exc_info())})
예제 #16
0
파일: server.py 프로젝트: hashimmm/KTS
def get_kaltura_mobileplayer_url():
    kaltura_id, entry_id = parse_ids()
    cache_timestamp = int(time.time())
    # kaltura_session_loader(session)
    # kclient = session.get("kclient", None)
    settings = properties.load_kaltura_settings().get(kaltura_id)
    if not settings['MOBILE_PLAYER_FLAVOR']:
        return simplejson.dumps({"success": False,
                                 "messages": ['Flavor ID not configured!']})
    return render_template('kaltura_mobileplayer.html',
                           kaltura_local=settings['KALTURA_PATH'],
                           partner_id=settings['PARTNER_ID'],
                           player_id=settings['PLAYER_ID'],
                           entry_id=entry_id,
                           flavor_id=settings['MOBILE_PLAYER_FLAVOR'],
                           cache_timestamp=cache_timestamp)
예제 #17
0
def add_flavor_to_default_conversion_profile(client, flavor_id, kaltura_id):
    def_cp = client.conversionProfile.getDefault()
    settings = properties.load_kaltura_settings().get(kaltura_id)
    cp_id = def_cp.id
    cp_flavorParamsIds = def_cp.flavorParamsIds + u',{}'.format(flavor_id)
    url = "{}/api_v3/?service=conversionProfile&action=update".format(
        settings['SERVICE_URL'])
    payload = {}
    payload['ks'] = client.getKs()
    payload['id'] = cp_id
    payload['conversionProfile:flavorParamsIds'] = cp_flavorParamsIds
    data = urlencode(payload)
    req = urllib2.Request(url, data)
    response = urllib2.urlopen(req).read()
    if "<error>" in response:
        raise Exception(response)
예제 #18
0
def add_flavor_to_default_conversion_profile(client, flavor_id, kaltura_id):
    def_cp = client.conversionProfile.getDefault()
    settings = properties.load_kaltura_settings().get(kaltura_id)
    cp_id = def_cp.id
    cp_flavorParamsIds = def_cp.flavorParamsIds + u',{}'.format(flavor_id)
    url = "{}/api_v3/?service=conversionProfile&action=update".format(
        settings['SERVICE_URL'])
    payload = {}
    payload['ks'] = client.getKs()
    payload['id'] = cp_id
    payload['conversionProfile:flavorParamsIds'] = cp_flavorParamsIds
    data = urlencode(payload)
    req = urllib2.Request(url, data)
    response = urllib2.urlopen(req).read()
    if "<error>" in response:
        raise Exception(response)
예제 #19
0
파일: server.py 프로젝트: afrobeard/KTS
def get_excel():
    # if True:
    try:
        kaltura_id, entry_id = parseIds(request.args, request.form)
        fields = request.args.get('fields', None)
        if fields:
            fields = [item.lower() for item in fields.split(',') if item.lower() in DEFAULT_SEARCH_FIELD_LIST]
        else:
            fields = DEFAULT_SEARCH_FIELD_LIST
        filename = request.args.get('filename', None)
        # if i don't set pagesize, kaltura uses 30 as default.
        # max is 500 btw.
        pagesize = int(request.args.get('pagesize', 500))
        types = request.args.get('types','video,audio').split(',')
        skip_types = [each for each in ['video','audio','image'] if each not in types]
        skip_vals = {'media_type':[each.upper() for each in skip_types]}
        if not filename:
            #raise Exception('filename is required')
            settings = properties.load_kaltura_settings().get(kaltura_id)
            filename = str(kaltura_id) + settings['KALTURA_NAME']
        filename = secure_filename(filename)
        client = kaltura_session_loader(kaltura_id)
        totaling_success, total = count(client)
        workbook, filepath = create_workbook(filename)
        worksheet = get_new_worksheet(workbook)
        i = total / pagesize + (1 if total % pagesize else 0)
        skipped = 0
        for num in xrange(i):
            data = searchVideos(
                client, kaltura_id, True, int(pagesize), num + 1)
            write_result = write_to_worksheet(worksheet,
                                              data,
                                              fields,
                                              int(pagesize) * num - skipped,
                                              skip_vals)
            skipped += write_result['skipped']
        close_workbook(workbook)
        return send_file(filepath, as_attachment=True,
                         attachment_filename=os.path.basename(filepath))
    except Exception as e:
        return simplejson.dumps({
            "success": False,
            "errorValue": repr(sys.exc_info()), "exception": str(e)})
예제 #20
0
파일: server.py 프로젝트: hashimmm/KTS
def get_excel():
    kaltura_id, entry_id = parse_ids()
    fields = request.args.get('fields', None)
    if fields:
        fields = [item.lower() for item in fields.split(',') if
                  item.lower() in myKalturaObject.DEFAULT_SEARCH_FIELD_LIST]
    else:
        fields = myKalturaObject.DEFAULT_SEARCH_FIELD_LIST
    filename = request.args.get('filename', None)
    # if i don't set pagesize, kaltura uses 30 as default.
    # max is 500 btw.
    pagesize = int(request.args.get('pagesize', 500))
    types = request.args.get('types', 'video,audio').split(',')
    skip_types = [each for each in ['video', 'audio', 'image'] if
                  each not in types]
    skip_vals = {'media_type': [each.upper() for each in skip_types]}
    if not filename:
        # raise Exception('filename is required')
        settings = properties.load_kaltura_settings().get(kaltura_id)
        filename = str(kaltura_id) + settings['KALTURA_NAME']
    filename = secure_filename(filename)
    client = kaltura_session_loader(kaltura_id)
    totaling_success, total = myKalturaObject.count(client)
    workbook, filepath = create_workbook(filename)
    worksheet = get_new_worksheet(workbook)
    i = total / pagesize + (1 if total % pagesize else 0)
    skipped = 0
    for num in utils.rangegen(i):
        data = myKalturaObject.searchVideos(
            client, kaltura_id, True, int(pagesize), num + 1)
        write_result = write_to_worksheet(worksheet,
                                          data,
                                          fields,
                                          int(pagesize) * num - skipped,
                                          skip_vals)
        skipped += write_result['skipped']
    close_workbook(workbook)
    return send_file(filepath, as_attachment=True,
                     attachment_filename=os.path.basename(filepath))
예제 #21
0
파일: server.py 프로젝트: hashimmm/KTS
def get_thumb_url():
    """ you might want to remove the error checking from here later.
        (sends a GET for the image to check for error :D
        could also just attempt a get_media request.
        UPDATE: REMOVED THE ERROR CHECKING.)
        services should just use get_media and parse the json returned
        That json contains thumbnail url as well.
    """
    # width = request.args.get('width', None)
    # height = request.args.get('height', None)
    kaltura_id, entry_id = parse_ids()
    # settings = properties.load_kaltura_settings().get(kaltura_id)
    # if width and height:
    #     #response = urllib2.urlopen("http://" + settings['KALTURA_PATH']\
    #     #   + "/p/" + settings['PARTNER_ID'] + "/thumbnail/entry_id/" +\
    #     #   entry_id + "/width/" + width + "/height/" + height + "/")
    #     return simplejson.dumps({
    #         'success': True,
    #         'imageUrl': "http://" +
    #         settings['KALTURA_PATH'] +
    #         "/p/" + settings['PARTNER_ID'] +
    #         "/thumbnail/entry_id/" +
    #         entry_id + "/width/" +
    #         width + "/height/" + height + "/"})
    client = kaltura_session_loader(kaltura_id)
    default_thumb = myKalturaObject.thumbnail_get_default(client, entry_id)
    if not default_thumb is None:
        default_thumb['imageUrl'] = default_thumb['url']
        default_thumb['success'] = True
        return simplejson.dumps(default_thumb)
    else:
        settings = properties.load_kaltura_settings().get(kaltura_id)
        return simplejson.dumps({
            'success': True,
            'imageUrl': "http://" +
                        settings['KALTURA_PATH'] +
                        "/p/" + settings['PARTNER_ID'] +
                        "/thumbnail/entry_id/" +
                        entry_id + "/%s" % int(time.time())})
예제 #22
0
파일: server.py 프로젝트: hashimmm/KTS
def kaltura_session_loader_base(kaltura_id, session):
    # Refresh Kaltura Session If not
    print ("Current in session" + repr(session))
    kkey = 'kaltura-{}'.format(kaltura_id)
    if kkey in session and 'ksusages' in session[kkey] \
        and 'ksessionkey' in session[kkey] \
        and 'kstime' in session[kkey] and session[kkey]['ksusages'] < 5 and \
           (time.time() - session[kkey]['kstime']) < myKalturaObject.KS_EXPIRY:
        print ("I already have session. kid: {} ks: {} usages: {}" . 
        format(
            kaltura_id, session[kkey]['ksessionkey'], session[kkey]['ksusages']))
        session[kkey]['ksusages'] += 1
        return myKalturaObject.create_session(kaltura_id,
                                              session[kkey]["ksessionkey"])
    else:
        session[kkey] = {}
        settings = properties.load_kaltura_settings().get(kaltura_id)
        session[kkey]["ksessionkey"] = myKalturaObject.get_new_session_key(
            settings)
        session[kkey]["ksusages"] = 0
        session[kkey]["kstime"] = time.time()
        return myKalturaObject.create_session(kaltura_id,
                                              session[kkey]["ksessionkey"])
예제 #23
0
파일: server.py 프로젝트: afrobeard/KTS
def view_configs_prettyjson():
    prettified = simplejson.dumps(properties.load_kaltura_settings(), sort_keys=True, indent=4 * ' ')
    prettified = '<html><body><pre>' + prettified + '</pre></body></html>'
    return prettified
예제 #24
0
    KalturaEntryStatus, KalturaThumbParams, KalturaNullableBoolean
# to handle some particular kaltura exceptions:
from KalturaClientBase import KalturaException

import properties
from utils import convert_file_to_unicode, addFileLogger

if current_app:
    logger = current_app.logger
else:
    logger = logging.getLogger('myKalturaObject')
    addFileLogger(logger, "myKalturaObject.log", 2)


SETTINGS = {}
properties.load_kaltura_settings(SETTINGS)

KALTURA_REQUEST_TIMEOUT = 60
KS_EXPIRY = 600

DEFAULT_SEARCH_FIELD_LIST = [
    'id',
    'name',
    'status',
    'description',
    'tags',
    'url',
    'thumbnail_url',
    'media_type',
    'plays',
    'views',
예제 #25
0
파일: server.py 프로젝트: afrobeard/KTS
def update_config():
    kaltura_id = request.args.get('KALTURA_CONFIG_ID')
    settings = properties.load_kaltura_settings().get(kaltura_id)
    return render_template('kaltura_update_config.html',
                            settings=settings,
                            kaltura_id=kaltura_id)
예제 #26
0
파일: server.py 프로젝트: afrobeard/KTS
def view_configs_getjson():
    return simplejson.dumps(properties.load_kaltura_settings())
예제 #27
0
def get_entry(media_id, kaltura_id, client=None, width=120, height=120):
    settings = properties.load_kaltura_settings().get(kaltura_id)
    error = False
    error_message = None
    entry = None
    try:
        entry = client.media.get(media_id)
    except Exception as inst:
        error_message = str(inst)
        error = True
    entryData = {}
    if error:
        entryData['success'] = False
        entryData['message'] = error_message
    else:
        entryData['success'] = True
        typelist = {
            KalturaMediaType.VIDEO: 'VIDEO',
            KalturaMediaType.IMAGE: 'IMAGE',
            KalturaMediaType.AUDIO: 'AUDIO',
            KalturaMediaType.LIVE_STREAM_FLASH: 'LIVE_STREAM_FLASH',
            KalturaMediaType.LIVE_STREAM_WINDOWS_MEDIA:
            'LIVE_STREAM_WINDOWS_MEDIA',
            KalturaMediaType.LIVE_STREAM_REAL_MEDIA: 'LIVE_STREAM_REAL_MEDIA',
            KalturaMediaType.LIVE_STREAM_QUICKTIME: 'LIVE_STREAM_QUICKTIME'
        }
        entryData['media_type'] = typelist[entry.getMediaType().getValue()]
        # Urls/Accessors
        entryData['url'] = entry.getDataUrl()
        entryData['thumbnail_url_old'] = entry.getThumbnailUrl()
        url = "%s/api_v3/?service=thumbasset&action=list" % settings[
            'SERVICE_URL']
        data = urlencode({"filter:entryIdEqual": media_id, "action": "list"})
        req = urllib2.Request(url, data)
        content = urllib2.urlopen(req).read()
        entryData['ks'] = client.getKs()
        contentxml = ET.fromstring(content)
        thumb_id = ''
        for item in contentxml.findall('./result/objects/item'):
            tags = item.find('tags').text
            if tags and 'default_thumb' in tags:
                thumb_id = item.find('id').text
        thumbnail_url = "%s/p/%s/thumbnail/entry_id/%s" % (
            settings['SERVICE_URL'], settings['PARTNER_ID'], media_id)
        entryData['thumbnail_url'] = thumbnail_url + \
                                     "/width/%s/height/%s?%s" % (
                                     width, height, int(time.time()))
        entryData['download_url'] = entry.getDownloadUrl()
        entryData['thumb_id'] = thumb_id
        # ViewData
        entryData['plays'] = entry.getPlays()
        entryData['views'] = entry.getViews()
        entryData['rank'] = (entry.getRank(), entry.getTotalRank())
        # Video Properties
        entryData['width'] = entry.getWidth()
        entryData['height'] = entry.getHeight()
        entryData['duration'] = entry.getDuration()
        entryData['created'] = entry.getCreatedAt()
        entryData['updated'] = entry.getUpdatedAt()
        # Video Data
        entryData['name'] = entry.getName()
        entryData['description'] = entry.getDescription()
        entryData['tags'] = entry.getTags()
        # Search Text
        entryData['searchtext'] = entry.getSearchText()
        # Control
        entryData['startDate'] = entry.getStartDate()
        entryData['endDate'] = entry.getEndDate()
        # entryData['status'] = entry.getStatus()
    return entryData
예제 #28
0
파일: server.py 프로젝트: hashimmm/KTS
def update_config():
    kaltura_id = request.args.get('KALTURA_CONFIG_ID')
    settings = properties.load_kaltura_settings().get(kaltura_id)
    return render_template('kaltura_update_config.html',
                           settings=settings,
                           kaltura_id=kaltura_id)
예제 #29
0
파일: server.py 프로젝트: hashimmm/KTS
def view_configs_prettyjson():
    prettified = simplejson.dumps(properties.load_kaltura_settings(),
                                  sort_keys=True, indent=4 * ' ')
    prettified = '<html><body><pre>' + prettified + '</pre></body></html>'
    return prettified
예제 #30
0
from KalturaCoreClient import KalturaThumbAsset, KalturaUrlResource, \
    KalturaEntryStatus, KalturaThumbParams, KalturaNullableBoolean
# to handle some particular kaltura exceptions:
from KalturaClientBase import KalturaException

import properties
from utils import convert_file_to_unicode, addFileLogger

if current_app:
    logger = current_app.logger
else:
    logger = logging.getLogger('myKalturaObject')
    addFileLogger(logger, "myKalturaObject.log", 2)

SETTINGS = {}
properties.load_kaltura_settings(SETTINGS)

KALTURA_REQUEST_TIMEOUT = 60
KS_EXPIRY = 600

DEFAULT_SEARCH_FIELD_LIST = [
    'id', 'name', 'status', 'description', 'tags', 'url', 'thumbnail_url',
    'media_type', 'plays', 'views', 'rank', 'width', 'height', 'duration',
    'views', 'updated', 'created', 'searchtext', 'startDate', 'endDate',
    'partner_id', 'user_id', 'download_url', 'source_type', 'mediaDate',
    'flavorParamsId', 'conversionQuality', 'creditUserName', 'creditUrl'
]

LANGUAGE_LIST = [
    "Abkhazian", "Afar", "Afrikaans", "Albanian", "Amharic", "Arabic",
    "Armenian", "Assamese", "Aymara", "Azerbaijani", "Bashkir", "Basque",
예제 #31
0
파일: server.py 프로젝트: hashimmm/KTS
def view_configs_getjson():
    return simplejson.dumps(properties.load_kaltura_settings())
예제 #32
0
파일: server.py 프로젝트: afrobeard/KTS
        kaltura_id, entry_id = parseIds(request.args, request.form)
        if not entry_id:
            raise Exception('entry_id is required')
        client = kaltura_session_loader(kaltura_id)
        caption_id = request.args.get('caption_id', None) or \
            request.form.get('caption_id', None)
        name = request.args.get('name', None) or request.form.get('name', None)
        default = request.args.get('default', None) or \
            request.form.get('default', None)
        language = request.args.get('language', None) or \
            request.form.get('language', None)
        capformat = request.args.get('format', None) or \
            request.form.get('format', None)
        return simplejson.dumps(update_caption(caption_id=caption_id,
                                               capformat=capformat,
                                               language=language,
                                               default=default,
                                               name=name,
                                               client=client))
    # except:
    # return simplejson.dumps({'success':False ,
    # 'messages':repr(sys.exc_info())})

if __name__ == '__main__':
    app.debug = True
    print "Starting with kaltura settings"
    print repr(properties.load_kaltura_settings())
    print "Starting with server settings"
    print repr(SETTINGS)
    app.run(host='0.0.0.0', port=int(SETTINGS['PORT']))
예제 #33
0
def get_entry(media_id, kaltura_id, client=None, width=120, height=120):
    settings = properties.load_kaltura_settings().get(kaltura_id)
    error = False
    error_message = None
    entry = None
    try:
        entry = client.media.get(media_id)
    except Exception as inst:
        error_message = str(inst)
        error = True
    entryData = {}
    if error:
        entryData['success'] = False
        entryData['message'] = error_message
    else:
        entryData['success'] = True
        typelist = {
            KalturaMediaType.VIDEO: 'VIDEO',
            KalturaMediaType.IMAGE: 'IMAGE',
            KalturaMediaType.AUDIO: 'AUDIO',
            KalturaMediaType.LIVE_STREAM_FLASH: 'LIVE_STREAM_FLASH',
            KalturaMediaType.LIVE_STREAM_WINDOWS_MEDIA:
                'LIVE_STREAM_WINDOWS_MEDIA',
            KalturaMediaType.LIVE_STREAM_REAL_MEDIA: 'LIVE_STREAM_REAL_MEDIA',
            KalturaMediaType.LIVE_STREAM_QUICKTIME: 'LIVE_STREAM_QUICKTIME'
        }
        entryData['media_type'] = typelist[entry.getMediaType().getValue()]
        # Urls/Accessors
        entryData['url'] = entry.getDataUrl()
        entryData['thumbnail_url_old'] = entry.getThumbnailUrl()
        url = "%s/api_v3/?service=thumbasset&action=list" % settings[
            'SERVICE_URL']
        data = urlencode({"filter:entryIdEqual": media_id, "action": "list"})
        req = urllib2.Request(url, data)
        content = urllib2.urlopen(req).read()
        entryData['ks'] = client.getKs()
        contentxml = ET.fromstring(content)
        thumb_id = ''
        for item in contentxml.findall('./result/objects/item'):
            tags = item.find('tags').text
            if tags and 'default_thumb' in tags:
                thumb_id = item.find('id').text
        thumbnail_url = "%s/p/%s/thumbnail/entry_id/%s" % (
            settings['SERVICE_URL'], settings['PARTNER_ID'], media_id)
        entryData['thumbnail_url'] = thumbnail_url + \
                                     "/width/%s/height/%s?%s" % (
                                     width, height, int(time.time()))
        entryData['download_url'] = entry.getDownloadUrl()
        entryData['thumb_id'] = thumb_id
        # ViewData
        entryData['plays'] = entry.getPlays()
        entryData['views'] = entry.getViews()
        entryData['rank'] = (entry.getRank(), entry.getTotalRank())
        # Video Properties
        entryData['width'] = entry.getWidth()
        entryData['height'] = entry.getHeight()
        entryData['duration'] = entry.getDuration()
        entryData['created'] = entry.getCreatedAt()
        entryData['updated'] = entry.getUpdatedAt()
        # Video Data
        entryData['name'] = entry.getName()
        entryData['description'] = entry.getDescription()
        entryData['tags'] = entry.getTags()
        # Search Text
        entryData['searchtext'] = entry.getSearchText()
        # Control
        entryData['startDate'] = entry.getStartDate()
        entryData['endDate'] = entry.getEndDate()
        # entryData['status'] = entry.getStatus()
    return entryData
예제 #34
0
파일: server.py 프로젝트: hashimmm/KTS
        return simplejson.dumps(error_dict), 500

    @app.errorhandler(myKalturaObject.KalturaClientException)
    def handle_kaltura_client_error(error):
        app.logger.exception(str(error))
        error_dict = {
            "success": False,
            "messages": [str(error)] + g.get('msgs', [])
        }
        return simplejson.dumps(error_dict), 500

    @app.errorhandler(Exception)
    def handle_other_errors(error):
        app.logger.exception(str(error))
        error_dict = {
            "success": False,
            "messages": [str(error)] + g.get('msgs', [])
        }
        return simplejson.dumps(error_dict), 500


if __name__ == '__main__':
    app.debug = True if SETTINGS['DEBUG_MODE'] else False
    from pprint import pprint

    print ("Starting with server settings")
    pprint(SETTINGS)
    print ("Starting with kaltura settings")
    pprint(properties.load_kaltura_settings())
    app.run(host='0.0.0.0', port=int(SETTINGS['PORT']))