def search_shows_by_keyword(self, keyword, unite=0, source_site=None, category=None, release_year=None, area=None, orderby='view-count', paid=None, hasvideotype=None, page=1, count=20): """doc: http://open.youku.com/docs/doc?id=82 """ url = 'https://openapi.youku.com/v2/searches/show/by_keyword.json' params = { 'client_id': self.client_id, 'keyword': keyword, 'unite': unite, 'source_site': source_site, 'category': category, 'release_year': release_year, 'area': area, 'orderby': orderby, 'paid': paid, 'hasvideotype': hasvideotype, 'page': page, 'count': count } params = remove_none_value(params) r = requests.get(url, params=params) check_error(r) return r.json()
def create(self, params): # prepare file info params['file_name'] = self.file_name params['file_size'] = self.file_size params['file_md5'] = self.file_md5 = self.checksum_md5file(self.file) self.logger.info('upload file %s, size: %d bytes' % (self.file_name, self.file_size)) self.logger.info('md5 of %s: %s' % (self.file_name, self.file_md5)) params['client_id'] = self.client_id params['access_token'] = self.access_token url = 'https://openapi.youku.com/v2/uploads/create.json' r = requests.get(url, params=params) check_error(r, 201) result = r.json() self.upload_token = result['upload_token'] self.logger.info('upload token of %s: %s' % (self.file_name, self.upload_token)) if result['instant_upload_ok'] == 'yes': # pass upload and finish # this case hasn't happen and test self.logger.info("instant upload %s" % self.file_name) return self.commit() self.upload_server_ip = socket.gethostbyname( result['upload_server_uri']) self.logger.info('upload_server_ip of %s: %s' % (self.file_name, self.upload_server_ip))
def search_show_top_unite(self, category, genre=None, area=None, year=None, orderby=None, headnum=1, tailnum=1, onesiteflag=None, page=1, count=20): """doc: http://open.youku.com/docs/doc?id=86 """ url = 'https://openapi.youku.com/v2/searches/show/top_unite.json' params = { 'client_id': self.client_id, 'category': category, 'genre': genre, 'area': area, 'year': year, 'orderby': orderby, 'headnum': headnum, 'tailnum': tailnum, 'onesiteflag': onesiteflag, 'page': page, 'count': count } params = remove_none_value(params) r = requests.get(url, params=params) check_error(r) return r.json()
def search_videos_by_keyword(self, keyword, category=None, period='week', orderby='relevance', public_type='all', paid=None, timeless=None, timemore=None, streamtypes=None, page=1, count=20): """doc: http://open.youku.com/docs/doc?id=81 """ url = 'https://openapi.youku.com/v2/searches/video/by_keyword.json' params = { 'client_id': self.client_id, 'keyword': keyword, 'category': category, 'period': period, 'orderby': orderby, 'public_type': public_type, 'paid': paid, 'timeless': timeless, 'timemore': timemore, 'streamtypes': streamtypes, 'page': page, 'count': count } params = remove_none_value(params) r = requests.get(url, params=params) check_error(r) return r.json()
def playlist_category(self): """doc: http://open.youku.com/docs/doc?id=94 """ url = 'https://openapi.youku.com/v2/schemas/playlist/category.json' r = requests.get(url) check_error(r) return r.json()
def find_persons_by_type(self, type, nationality=None, gender=None, firstletter=None, orderby='view-week-count', page=1, count=20): """doc: http://open.youku.com/docs/docs?id=89 """ url = 'https://openapi.youku.com/v2/persons/by_type.json' params = { 'client_id': self.client_id, 'type': type, 'nationality': nationality, 'gender': gender, 'firstletter': firstletter, 'orderby': orderby, 'page': page, 'count': count } params = remove_none_value(params) r = requests.get(url, params=params) check_error(r) return r.json()
def upload_spec(self): """doc: http://open.youku.com/docs/doc?id=91 """ url = 'https://openapi.youku.com/v2/schemas/upload/spec.json' r = requests.get(url) check_error(r) return r.json()
def comment_expression(self): """doc: http://open.youku.com/docs/doc?id=92 """ url = 'https://openapi.youku.com/v2/schemas/comment/expression.json' r = requests.get(url) check_error(r) return r.json()
def find_shows_by_category(self, category, genre=None, area=None, release_year=None, paid=None, orderby='view-today-count', streamtypes=None, person=None, page=1, count=20): """doc: http://open.youku.com/docs/doc?id=62 """ url = 'https://openapi.youku.com/v2/shows/by_category.json' params = { 'client_id': self.client_id, 'category': category, 'genre': genre, 'area': area, 'release_year': release_year, 'paid': paid, 'orderby': orderby, 'streamtypes': streamtypes, 'person': person, 'page': page, 'count': count } params = remove_none_value(params) r = requests.get(url, params=params) check_error(r) return r.json()
def searche_top_category(self): """doc: http://open.youku.com/docs/doc?id=95 """ url = 'https://openapi.youku.com/v2/schemas/searche/top/category.json' r = requests.get(url) check_error(r) return r.json()
def update_video(self, access_token, video_id, title=None, tags=None, category=None, copyright_type=None, public_type=None, watch_password=None, description=None, thumbnail_seq=None): """doc: http://open.youku.com/docs/doc?id=50 """ url = 'https://openapi.youku.com/v2/videos/update.json' data = { 'client_id': self.client_id, 'access_token': access_token, 'video_id': video_id, 'title': title, 'tags': tags, 'category': category, 'copyright_type': copyright_type, 'public_type': public_type, 'watch_password': watch_password, 'description': description, 'thumbnail_seq': thumbnail_seq } data = remove_none_value(data) r = requests.post(url, data=data, verify=False) check_error(r) return r.json()['id']
def create(self, params): # prepare file info params['file_name'] = self.file_name params['file_size'] = self.file_size params['file_md5'] = self.file_md5 = self.checksum_md5file(self.file) self.logger.info('upload file %s, size: %d bytes' % (self.file_name, self.file_size)) self.logger.info('md5 of %s: %s' % (self.file_name, self.file_md5)) params['client_id'] = self.client_id params['access_token'] = self.access_token url = 'https://openapi.youku.com/v2/uploads/create.json' r = requests.get(url, params=params, verify=False) check_error(r, 201) result = r.json() self.upload_token = result['upload_token'] self.logger.info('upload token of %s: %s' % (self.file_name, self.upload_token)) if result['instant_upload_ok'] == 'yes': # pass upload and finish # this case hasn't happen and test self.logger.info("instant upload %s" % self.file_name) return self.commit() self.upload_server_ip = socket.gethostbyname( result['upload_server_uri']) self.logger.info('upload_server_ip of %s: %s' % (self.file_name, self.upload_server_ip))
def new_slice(self): params = { 'upload_token': self.upload_token } url = 'http://%s/gupload/new_slice' % self.upload_server_ip r = requests.get(url, params=params) check_error(r, 201) self._save_slice_state(r.json())
def subscribe_notice(self, access_token): """doc: http://open.youku.com/docs/doc?id=31 """ url = 'https://openapi.youku.com/v2/users/subscribe/notice.json' params = {'client_id': self.client_id, 'access_token': access_token} r = requests.get(url, params=params) check_error(r) return r.json()
def search_keyword_complete(self, keyword): """doc: http://open.youku.com/docs/doc?id=83 """ url = 'https://openapi.youku.com/v2/searches/keyword/complete.json' params = {'client_id': self.client_id, 'keyword': keyword} r = requests.get(url, params=params) check_error(r) return r.json()
def check(self): params = { 'upload_token': self.upload_token } url = 'http://%s/gupload/check' % self.upload_server_ip r = requests.get(url, params=params) check_error(r, 200) return r.json()
def find_person_by_id(self, person_id): """doc: http://open.youku.com/docs/docs?id=87 """ url = 'https://openapi.youku.com/v2/persons/show.json' params = {'client_id': self.client_id, 'person_id': person_id} r = requests.get(url, params=params) check_error(r) return r.json()
def find_comment_by_id(self, comment_id): """doc: http://open.youku.com/docs/doc?id=32 """ url = 'https://openapi.youku.com/v2/comments/show.json' params = {'client_id': self.client_id, 'comment_id': comment_id} r = requests.get(url, params=params) check_error(r) return r.json()
def find_playlists_by_ids(self, playlist_ids): """doc: http://open.youku.com/docs/doc?id=67 """ url = 'https://openapi.youku.com/v2/playlists/show_batch.json' params = {'client_id': self.client_id, 'playlist_ids': playlist_ids} r = requests.get(url, params=params) check_error(r) return r.json()
def my_info(self, access_token): """doc: http://open.youku.com/docs/doc?id=23 """ url = 'https://openapi.youku.com/v2/users/myinfo.json' data = {'client_id': self.client_id, 'access_token': access_token} r = requests.post(url, data=data) check_error(r) return r.json()
def find_videos_by_ids(self, video_ids): """doc: http://open.youku.com/docs/doc?id=45 """ url = 'https://openapi.youku.com/v2/videos/show_basic_batch.json' params = {'client_id': self.client_id, 'video_ids': video_ids} r = requests.get(url, params=params) check_error(r) return r.json()
def find_video_details_by_ids(self, video_ids, ext=None): """doc: http://open.youku.com/docs/doc?id=47 """ url = 'https://openapi.youku.com/v2/videos/show_batch.json' params = {'client_id': self.client_id, 'video_ids': video_ids} if ext: params['ext'] = ext r = requests.get(url, params=params) check_error(r) return r.json()
def new_slice(self): params = { 'upload_token': self.upload_token } url = 'http://%s/gupload/new_slice' % self.upload_server_ip r = requests.get(url, params=params) check_error(r, 200, 201) # origin value is 201, but new_slice return status is 200, # GoTop 2016.2.9 change 201 to 200 self._save_slice_state(r.json())
def refresh_token(self, refresh_token): '''return origin json''' url = 'https://openapi.youku.com/v2/oauth2/token' data = {'client_id': self.client_id, 'client_secret': self.client_secret, 'grant_type': 'refresh_token', 'refresh_token': refresh_token} r = requests.post(url, data=data) check_error(r) return r.json()
def find_videos_by_ids(self, video_ids): """doc: http://open.youku.com/docs/doc?id=45 """ url = 'https://openapi.youku.com/v2/videos/show_basic_batch.json' params = { 'client_id': self.client_id, 'video_ids': video_ids } r = requests.get(url, params=params) check_error(r) return r.json()
def find_persons_by_ids(self, person_ids): """doc: http://open.youku.com/docs/docs?id=88 """ url = 'https://openapi.youku.com/v2/persons/show_batch.json' params = { 'client_id': self.client_id, 'person_ids': person_ids } r = requests.get(url, params=params) check_error(r) return r.json()
def find_show_by_id(self, show_id): """doc: http://open.youku.com/docs/doc?id=59 """ url = 'https://openapi.youku.com/v2/shows/show.json' params = { 'client_id': self.client_id, 'show_id': show_id } r = requests.get(url, params=params) check_error(r) return r.json()
def search_keyword_complete(self, keyword): """doc: http://open.youku.com/docs/doc?id=83 """ url = 'https://openapi.youku.com/v2/searches/keyword/complete.json' params = { 'client_id': self.client_id, 'keyword': keyword } r = requests.get(url, params=params) check_error(r) return r.json()
def subscribe_notice(self, access_token): """doc: http://open.youku.com/docs/doc?id=31 """ url = 'https://openapi.youku.com/v2/users/subscribe/notice.json' params = { 'client_id': self.client_id, 'access_token': access_token } r = requests.get(url, params=params) check_error(r) return r.json()
def get_token_by_code(self, code): '''return origin json''' url = 'https://openapi.youku.com/v2/oauth2/token' data = {'client_id': self.client_id, 'client_secret': self.client_secret, 'grant_type': 'authorization_code', 'code': code, 'redirect_uri': self.redirect_uri} r = requests.post(url, data=data) check_error(r) return r.json()
def find_playlist_by_id(self, playlist_id): """doc: http://open.youku.com/docs/doc?id=66 """ url = 'https://openapi.youku.com/v2/playlists/show.json' params = { 'client_id': self.client_id, 'playlist_id': playlist_id } r = requests.get(url, params=params) check_error(r) return r.json()
def find_comments_by_ids(self, comment_ids): """doc: http://open.youku.com/docs/doc?id=34 """ url = 'https://openapi.youku.com/v2/comments/show_batch.json' params = { 'client_id': self.client_id, 'comment_ids': comment_ids } r = requests.get(url, params=params) check_error(r) return r.json()
def destroy_comment(self, access_token, comment_id): """doc: http://open.youku.com/docs/doc?id=42 """ url = 'https://openapi.youku.com/v2/comments/destroy.json' data = { 'client_id': self.client_id, 'access_token': access_token, 'comment_id': comment_id } r = requests.post(url, data=data) check_error(r) return r.json()['id']
def destroy_favorite_video(self, access_token, video_id): """doc: http://open.youku.com/docs/doc?id=56 """ url = 'https://openapi.youku.com/v2/videos/favorite/destroy.json' data = { 'client_id': self.client_id, 'access_token': access_token, 'video_id': video_id } r = requests.post(url, data=data) check_error(r) return r.json()['id']
def find_videos_by_related(self, video_id, count=20): """doc: http://open.youku.com/docs/doc?id=52 """ url = 'https://openapi.youku.com/v2/videos/by_related.json' params = { 'client_id': self.client_id, 'video_id': video_id, 'count': count } r = requests.get(url, params=params) check_error(r) return r.json()
def find_next_video_in_playlist(self, playlist_id, cur_video_id): """doc: http://open.youku.com/docs/doc?id=78 """ url = 'https://openapi.youku.com/v2/playlists/video/next.json' params = { 'client_id': self.client_id, 'playlist_id': playlist_id, 'video_id': cur_video_id } r = requests.get(url, params=params) check_error(r) return r.json()
def cancel_subscribe(self, access_token, show_id): """doc: ?? """ url = 'https://openapi.youku.com/v2/users/subscribe/cancel.json' params = { 'client_id': self.client_id, 'access_token': access_token, 'show_id': show_id } r = requests.post(url, data=params) check_error(r) return r.json()['result'] == 0
def find_shows_by_related(self, show_id, count=20): """doc: http://open.youku.com/docs/doc?id=63 """ url = 'https://openapi.youku.com/v2/shows/by_related.json' params = { 'client_id': self.client_id, 'show_id': show_id, 'count': count } r = requests.get(url, params=params) check_error(r) return r.json()
def create_subscribe(self, access_token, show_id): """doc: http://open.youku.com/docs/doc?id=29 """ url = 'https://openapi.youku.com/v2/users/subscribe/create.json' params = { 'client_id': self.client_id, 'access_token': access_token, 'show_id': show_id } r = requests.get(url, params=params) check_error(r) return r.json()['result'] == 0
def refresh_token(self, refresh_token): '''return origin json''' url = 'https://openapi.youku.com/v2/oauth2/token' data = { 'client_id': self.client_id, 'client_secret': self.client_secret, 'grant_type': 'refresh_token', 'refresh_token': refresh_token } r = requests.post(url, data=data) check_error(r) return r.json()
def destroy_playlist(self, access_token, playlist_id): """doc: http://open.youku.com/docs/doc?id=74 """ url = 'https://openapi.youku.com/v2/playlists/destroy.json' data = { 'client_id': self.client_id, 'access_token': access_token, 'playlist_id': playlist_id } r = requests.post(url, data=data) check_error(r) return r.json()['id']
def del_videos_from_playlist(self, access_token, playlist_id, video_ids): """doc: http://open.youku.com/docs/doc?id=76 """ url = 'https://openapi.youku.com/v2/playlists/video/del.json' data = { 'client_id': self.client_id, 'access_token': access_token, 'playlist_id': playlist_id, 'video_ids': video_ids } r = requests.post(url, data=data) check_error(r) return r.json()['id']
def find_hot_comments_by_video(self, video_id, page=1, count=20): """doc: http://open.youku.com/docs/doc?id=36 """ url = 'https://openapi.youku.com/v2/comments/hot/by_video.json' params = { 'client_id': self.client_id, 'video_id': video_id, 'page': page, 'count': count } r = requests.get(url, params=params) check_error(r) return r.json()
def get_token_by_password(self, username, password): ''' To use this method, you must be cooperation level with youku. return origin json ''' url = 'https://openapi.youku.com/v2/oauth2/token' data = {'client_id': self.client_id, 'client_secret': self.client_secret, 'grant_type': 'password', 'username': username, 'password': password} r = requests.post(url, data=data) check_error(r) return r.json()
def find_comments_by_mention_me(self, access_token, page=1, count=20): """doc: http://open.youku.com/docs/doc?id=38 """ url = 'https://openapi.youku.com/v2/comments/by_mention_me.json' data = { 'client_id': self.client_id, 'access_token': access_token, 'page': page, 'count': count } r = requests.post(url, data=data) check_error(r) return r.json()