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)
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])
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])
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)
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()
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] )
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] )
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], ))
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)
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
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], ) )
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
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
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
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
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
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