Skip to content

Instantly share code, notes, and snippets.

Created November 3, 2013 01:35
Show Gist options
  • Save anonymous/7285498 to your computer and use it in GitHub Desktop.
Save anonymous/7285498 to your computer and use it in GitHub Desktop.
vimeo upload
class VimeoClient:
def __init__(self):
self.vimeo = OAuth1Service(
name='vimeo',
consumer_key='key',
consumer_secret='secret',
request_token_url='https://vimeo.com/oauth/request_token',
authorize_url='https://vimeo.com/oauth/authorize',
access_token_url='https://vimeo.com/oauth/access_token',
base_url='http://vimeo.com/api/rest/v2?format=json&method='
)
def new_session(self):
request_token, request_token_secret = self.vimeo.get_request_token(data={'oauth_callback': 'oob'})
authorize_url = self.vimeo.get_authorize_url(request_token)
print 'Go to this url ' + authorize_url
pin = raw_input('Enter oauth_verifier from query string: ')
session = self.vimeo.get_auth_session(request_token, request_token_secret, method='POST',
data={'oauth_verifier': pin})
print session.access_token, session.access_token_secret # serialize this
self.serialize_access(session)
return session
def reuse_session(self):
session_authorize = self.deserialize_access()
session = self.vimeo.get_session((session_authorize['access_token'],
session_authorize['access_token_secret']))
print(session.access_token)
return session
def call_user_happened(self, session):
params = {'method': 'vimeo.activity.happenedToUser',
'format': 'json'}
response = self.execute_method(session, params)
return response
def call_upload_get_quota(self, session):
params = {'method': 'vimeo.videos.upload.getQuota',
'oauth_token': session.access_token}
response = self.execute_method(session, params)
return response
def call_upload_get_ticket(self, session):
params = {'method': 'vimeo.videos.upload.getTicket',
'oauth_token': session.access_token,
'upload_method': 'streaming'}
response = self.execute_method(session, params)
ticket_info = self.parse_upload_ticket(response.json())
return ticket_info
def call_upload_check_ticket(self, session, ticket_id):
params = {'method': 'vimeo.upload.checkTicket',
'oauth_token': session.access_token,
'ticket_id': ticket_id}
response = self.execute_method(session, params)
return response
def call_upload_file(self, session, ticket_info, file, file_size):
session.headers['Content-Type'] = 'video/mp4'
session.headers['Content-Length'] = file_size
response = session.put(ticket_info['endpoint_secure'], data=file)
return response
def call_upload_verify_chunks(self, session, ticket_info):
session.headers['Content-Type'] = 'video/mp4'
session.headers['Content-Length'] = 0
session.headers['Content-Range'] = '*/*'
response = session.put(ticket_info['endpoint_secure'], data=" ")
return response
def call_upload_complete(self, session, ticket_id, filename):
params = {'method': 'vimeo.videos.upload.complete',
'oauth_token': session.access_token,
'ticket_id': ticket_id,
'filename': filename}
response = self.execute_method(session, params)
return response
def execute_method(self, session, params):
params['format'] = 'json'
response = session.get('http://vimeo.com/api/rest/v2', params=params)
return response
def serialize_access(self, session):
session_authorization = {'access_token': session.access_token,
'access_token_secret': session.access_token_secret}
with open('session_auth', 'w') as f:
pickle.dump(session_authorization, f)
def deserialize_access(self):
with open('session_auth') as f:
session_authorization = pickle.load(f)
return session_authorization
def parse_upload_ticket(self, ticket_json):
ticket_info = {'endpoint_secure': ticket_json['ticket']['endpoint'],
'ticket_id': ticket_json['ticket']['id']}
return ticket_info
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment