コード例 #1
0
def anthrotranscribe(media_uuid):
    """
    Launch transcription process for a given media
    """
    register_openers()
    media_item = Media.get(client=client, uuid=media_uuid)
    media_item.anthrotranscribe(client=client)
コード例 #2
0
def anthrotranscribe(media_uuid):
    """
    Launch transcription process for a given media
    """
    register_openers()
    media_item = Media.get(client=client, uuid=media_uuid)
    media_item.anthrotranscribe(client=client)
コード例 #3
0
def batch_download_transcript():
    register_openers()

    media_to_download_transcript_for = csv_to_json(
        csv_filename="%s/%s" %
        (settings.get('base', 'path.local.transcripts'),
         settings.get('test', 'media.download_transcript.csv')))['data']
    for media_item in media_to_download_transcript_for:
        download_transcript(media_uuid=media_item[0])
コード例 #4
0
def batch_upload_transcribe():
    register_openers()

    media_to_upload_transcribe = csv_to_json(
        csv_filename="%s/%s" %
        (settings.get('base', 'path.local.media'),
         settings.get('test', 'media.transcribe.csv')))['data']
    for media_item in media_to_upload_transcribe:
        upload_transcribe(media_filename=media_item[0])
コード例 #5
0
def download_transcript(media_uuid):
    register_openers()
    media_item = Media.get(client=client, uuid=media_uuid)
    print media_item.current_transcript

    transcript = Transcript.get(client=client, uuid=media_item.current_transcript['uuid'], format='json')
    if not os.path.exists(settings.get('base','path.local.scripts.output')):
        os.makedirs(settings.get('base','path.local.scripts.output'))
    f = open("%s/%s.srt" % (settings.get('base','path.local.scripts.output'), media_item.title), 'w')
    f.write(transcript.content)
コード例 #6
0
def publish_unpublish(media_uuid):
    """
    Publish and unpublish a media item's transcript.
    Publishing a transcript will make it available to anyone that knowns its uuid
    """
    register_openers()
    media_item = Media(accept='text/xml', username=username, password=password, uid=media_uuid)
    media_item.get()
    #from xml.dom import minidom
    #xmldoc = minidom.parseString(media_item.response.read())
    # current_transcript_uuid = xmldoc.getElementsByTagName('currentTranscript')[0].getElementsByTagName('id')[0].firstChild.data
    media_item.publish()
コード例 #7
0
def batch_upload_transcribe():
    register_openers()

    media_to_upload_transcribe = csv_to_json(
        csv_filename="%s/%s" % (
            settings.get('base', 'path.local.media'),
            settings.get('test', 'media.transcribe.csv')
        )
    )['data']
    for media_item in media_to_upload_transcribe:
        upload_transcribe(
            media_filename=media_item[0]
        )
コード例 #8
0
def batch_download_transcript():
    register_openers()

    media_to_download_transcript_for = csv_to_json(
        csv_filename="%s/%s" % (
            settings.get('base', 'path.local.transcripts'),
            settings.get('test', 'media.download_transcript.csv')
        )
    )['data']
    for media_item in media_to_download_transcript_for:
        download_transcript(
            media_uuid=media_item[0]
        )
コード例 #9
0
def batch_align():
    register_openers()

    # align all the files from the csv
    media_to_align = csv_to_json(
        csv_filename="%s/%s" %
        (settings.get('base', 'path.local.media'),
         settings.get('test', 'media.align.csv')))['data']
    for media_item in media_to_align:
        upload_align(media_filename=media_item[1],
                     aligndata="%s/%s.txt" % (
                         settings.get('base', 'path.local.transcripts'),
                         media_item[0],
                     ))
コード例 #10
0
def publish_unpublish(media_uuid):
    """
    Publish and unpublish a media item's transcript.
    Publishing a transcript will make it available to anyone that knowns its uuid
    """
    register_openers()
    media_item = Media(accept='text/xml',
                       username=username,
                       password=password,
                       uid=media_uuid)
    media_item.get()
    #from xml.dom import minidom
    #xmldoc = minidom.parseString(media_item.response.read())
    # current_transcript_uuid = xmldoc.getElementsByTagName('currentTranscript')[0].getElementsByTagName('id')[0].firstChild.data
    media_item.publish()
コード例 #11
0
def download_transcript(media_uuid):
    register_openers()
    media_item = Media.get(client=client, uuid=media_uuid)
    print media_item.current_transcript

    transcript = Transcript.get(client=client,
                                uuid=media_item.current_transcript['uuid'],
                                format='json')
    if not os.path.exists(settings.get('base', 'path.local.scripts.output')):
        os.makedirs(settings.get('base', 'path.local.scripts.output'))
    f = open(
        "%s/%s.srt" %
        (settings.get('base', 'path.local.scripts.output'), media_item.title),
        'w')
    f.write(transcript.content)
コード例 #12
0
def upload_transcribe(media_filename, title=None):
    """
    Upload a media file to Koemei for transcription
    """
    register_openers()

    try:
        log.info("Upload and transcribe file %s ..." % media_filename)
        media_item = Media.create(client=client,
                                  media_filename=media_filename,
                                  title=title)
        log.info("... OK - media uuid: %s" % media_item.uuid)
    except Exception, e:
        log.error("... Error creating media %s ..." % media_filename)
        log.error(e)
        log.error(traceback.format_exc())
        raise e
コード例 #13
0
def batch_align():
    register_openers()

    # align all the files from the csv
    media_to_align = csv_to_json(
        csv_filename="%s/%s" % (
            settings.get('base', 'path.local.media'),
            settings.get('test', 'media.align.csv')
        )
    )['data']
    for media_item in media_to_align:
        upload_align(
            media_filename=media_item[1].strip(),
            aligndata="%s/%s.txt" % (
                settings.get('base', 'path.local.transcripts'),
                media_item[0],
            )
        )
コード例 #14
0
def upload_transcribe(media_filename, title=None):
    """
    Upload a media file to Koemei for transcription
    """
    register_openers()

    try:
        log.info("Upload and transcribe file %s ..." % media_filename)
        media_item = Media.create(
            client=client,
            media_filename=media_filename,
            title=title
        )
        log.info("... OK - media uuid: %s" % media_item.uuid)
    except Exception, e:
        log.error("... Error creating media %s ..." % media_filename)
        log.error(e)
        log.error(traceback.format_exc())
        raise e
コード例 #15
0
def upload_align(media_filename, aligndata):
    """
    Upload a media file to Koemei for alignment
    NOTE : you will need your account to be specially setup to use this feature
    """
    register_openers()
    try:
        log.info("Upload and align media %s ..." % media_filename)

        media_item = Media.create(client=client,
                                  media_filename=media_filename,
                                  aligndata=aligndata,
                                  transcribe=False)

        log.info("... OK - media uuid: %s" % media_item.uuid)
    except Exception, e:
        log.error("... Error aligning media %s ..." % media_filename)
        log.error(e)
        log.error(traceback.format_exc())
        raise e
コード例 #16
0
    def create(
        cls,
        client,
        media_item,
        parent_note=None,
        **kwargs):
        """
        Create a note.
        """

        data = {}
        # TODO : fill in note params
        headers = {}
        url = [settings.get('base', 'paths.api.notes')]

        register_openers()
        response = client.request(url=url, data=data, headers=headers)
        response_json = json.loads(response)
        note = Note(fields=response_json['note'])

        return note
コード例 #17
0
def upload_align(media_filename, aligndata):
    """
    Upload a media file to Koemei for alignment
    NOTE : you will need your account to be specially setup to use this feature
    """
    register_openers()
    try:
        log.info("Upload and align media %s ..." % media_filename)

        media_item = Media.create(
            client=client,
            media_filename=media_filename,
            aligndata=aligndata,
            transcribe=False
        )

        log.info("... OK - media uuid: %s" % media_item.uuid)
    except Exception, e:
        log.error("... Error aligning media %s ..." % media_filename)
        log.error(e)
        log.error(traceback.format_exc())
        raise e
コード例 #18
0
    def create(
        cls,
        client,
        media_filename,
        transcribe=True,
        aligndata=None,
        **kwargs):
        """
        Create a media item.
        If transcript_filename provided: create media and align the transcript.

        @param media_filename: local/remote address of the media file to transcribe
        @param metadata_filename: local path to the metadata file containing media info (title, description, ...)
        @param transcript_filename: local path to the plain text transcript file to align
        @param transcribe: automagically launch transcription
        @param kwargs: title, description, tags, ...
        """

        data = {}
        headers = {}
        headers_ = {}
        url = [settings.get('base', 'paths.api.media')]

        # create the media from a service
        if 'service' in kwargs:
            data.update({
                'service': kwargs.get('service'),
                'item_id': kwargs.get('item_id')}
            )

        if 'title' in kwargs and kwargs["title"] is not None:
            data.update({
                'title': kwargs.get('title'),
            })

        if 'description' in kwargs:
            data.update({
                'description': kwargs.get('description'),
            })

        # upload from remote url
        if 'http' in media_filename:
            #url.append("?media=" + urllib.quote(media_filename, safe=''))
            #data = "" # should not be empty dict but empty string!
            data.update({
                'media': media_filename
            })
            data, headers_ = multipart_encode(data)

        # upload from local hard drive
        else:
            register_openers()
            data.update(
                {'media': open(media_filename, "rb")}
            )
            data, headers_ = multipart_encode(data)

        headers.update(headers_)
        response = client.request(url=url, data=data, headers=headers)
        response_json = json.loads(response)
        media_item = Media(fields=response_json['media_item'])

        if aligndata is not None:
            media_item.align(client=client, aligndata=aligndata)
        elif transcribe:
            media_item.transcribe(client=client)

        return media_item
コード例 #19
0
    def create(
        cls,
        client,
        media_filename,
        transcribe=True,
        aligndata=None,
        **kwargs):
        """
        Create a media item.
        If transcript_filename provided: create media and align the transcript.

        @param media_filename: local/remote address of the media file to transcribe
        @param metadata_filename: local path to the metadata file containing media info (title, description, ...)
        @param transcript_filename: local path to the plain text transcript file to align
        @param transcribe: automagically launch transcription
        @param kwargs: title, description, tags, ...
        """

        data = {}
        headers = {}
        headers_ = {}
        url = [settings.get('base', 'paths.api.media')]

        # create the media from a service
        if 'service' in kwargs:
            data.update({
                'service': kwargs.get('service'),
                'item_id': kwargs.get('item_id')}
            )

        if 'title' in kwargs:
            data.update({
                'title': kwargs.get('title'),
            })

        if 'description' in kwargs:
            data.update({
                'description': kwargs.get('description'),
            })

        # upload from remote url
        if 'http' in media_filename:
            #url.append("?media=" + urllib.quote(media_filename, safe=''))
            #data = "" # should not be empty dict but empty string!
            data.update({
                'media': media_filename
            })
            data, headers_ = multipart_encode(data)

        # upload from local hard drive
        else:
            register_openers()
            data.update(
                {'media': open(media_filename, "rb")}
            )
            data, headers_ = multipart_encode(data)

        headers.update(headers_)
        response = client.request(url=url, data=data, headers=headers)
        response_json = json.loads(response)
        media_item = Media(fields=response_json['media_item'])
        if aligndata is not None:
            media_item.align(client=client, aligndata=aligndata)
        elif transcribe:
            media_item.transcribe(client=client)

        return media_item