Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 28 additions & 19 deletions video_indexer/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@ def __init__(self, vi_subscription_key, vi_location, vi_account_id):
self.vi_account_id = vi_account_id
self.access_token = None

def get_access_token(self):
print('Getting video indexer access token...')
def get_access_token(self, silent=False):
if not silent:
print('Getting video indexer access token...')
headers = {
'Ocp-Apim-Subscription-Key': self.vi_subscription_key
}
Expand All @@ -37,21 +38,24 @@ def get_access_token(self):
)

access_token = access_token_req.text[1:-1]
print('Access Token: {}'.format(access_token))
if not silent:
print('Access Token: {}'.format(access_token))
self.access_token = access_token
return access_token

def check_access_token(self):
def check_access_token(self, silent=False):
if not self.access_token:
self.get_access_token()
self.get_access_token(silent)

def upload_to_video_indexer(
self, input_filename, video_name='',
video_language='English', streaming_preset='Default', indexing_preset='Default'
video_language='English', streaming_preset='Default', indexing_preset='Default',
silent=False
):
self.check_access_token()
self.check_access_token(silent)

print('Uploading video to video indexer...')
if not silent:
print('Uploading video to video indexer...')
params = {
'streamingPreset': streaming_preset,
'indexingPreset': indexing_preset,
Expand Down Expand Up @@ -83,26 +87,29 @@ def upload_to_video_indexer(

if upload_video_req.status_code == 429: # hit throttling limit, sleep and retry
error_resp = upload_video_req.json()
print('Throttling limit hit. Error message: {}'.format(error_resp.get('message')))
if not silent:
print('Throttling limit hit. Error message: {}'.format(error_resp.get('message')))
retry_after = get_retry_after_from_message(error_resp.get('message'))
time.sleep(retry_after + 1)
retry_count -= 1
continue

print('Error uploading video to video indexer: {}'.format(upload_video_req.json()))
if not silent:
print('Error uploading video to video indexer: {}'.format(upload_video_req.json()))
raise Exception('Error uploading video to video indexer')

response = upload_video_req.json()
return response['id']

def get_video_info(self, video_id, video_language='English'):
self.check_access_token()
def get_video_info(self, video_id, video_language='English', silent=False):
self.check_access_token(silent)

params = {
'accessToken': self.access_token,
'language': video_language
}
print('Getting video info for: {}'.format(video_id))
if not silent:
print('Getting video info for: {}'.format(video_id))

get_video_info_req = requests.get(
'https://api.videoindexer.ai/{loc}/Accounts/{acc_id}/Videos/{video_id}/Index'.format(
Expand All @@ -114,17 +121,18 @@ def get_video_info(self, video_id, video_language='English'):
)
response = get_video_info_req.json()

if response['state'] == 'Processing':
if response['state'] == 'Processing' and not silent:
print('Video still processing, current status: {}'.format(
response['videos'][0]['processingProgress'],
))

return response

def get_caption_from_video_indexer(self, video_id, caption_format='vtt', video_language='English'):
self.check_access_token()
def get_caption_from_video_indexer(self, video_id, caption_format='vtt', video_language='English', silent=False):
self.check_access_token(silent)

print('Getting caption from video: {}'.format(video_id))
if not silent:
print('Getting caption from video: {}'.format(video_id))
params = {
'accessToken': self.access_token,
'format': caption_format,
Expand All @@ -142,8 +150,9 @@ def get_caption_from_video_indexer(self, video_id, caption_format='vtt', video_l

return caption_req.content

def get_thumbnail_from_video_indexer(self, video_id, thumbnail_id):
print('Getting thumbnail from video: {}, thumbnail: {}'.format(video_id, thumbnail_id))
def get_thumbnail_from_video_indexer(self, video_id, thumbnail_id, silent=False):
if not silent:
print('Getting thumbnail from video: {}, thumbnail: {}'.format(video_id, thumbnail_id))
params = {
'accessToken': self.access_token
}
Expand Down