Created
November 3, 2013 01:35
-
-
Save anonymous/7285498 to your computer and use it in GitHub Desktop.
vimeo upload
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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