def get_youku_playlist(): """ 获取认证用户的playlist :return: """ service = YoukuPlaylists(CLIENT_ID) youku_access_token = youku_get_authenticate() # http://doc.open.youku.com/?docid=377 # 视频ID用逗号来分割,每个专辑最多200个视频,限制单次操作视频的最大个数,默认20 # video_ids=850,860,870,880 playlist_json = service.find_playlists_by_me( access_token=youku_access_token, orderby='published', page=1, count=20) # def upload_playlist_video(num, user): # upload_num = 0 # # 如果该视频已下载,但是未上传到优酷,则上传 # if video.is_upload == False: # # video对象还没有创建对应的youku对象怎么办? # youku_upload(video.youku.id) # # 在优酷上设置视频的playlist # set_youku_playlist_online_from_config_playlist(video_id) # upload_num = upload_num + 1 # if upload_num <= num: # break # result_list.append({'download_num': download_num, # 'upload_num': upload_num, # 'text': text})
def set_youku_playlist_online(youku_video_id, playlist_id): """ 根据youku的youkuplaylist属性,在优酷网上将youku对象添加到该playlist中 一个视频可以加入多个playlist,所以在youku中设置playlist后,如果不执行del_videos_from_playlist 操作,视频仍然属于该playlist :param youku_id: :return: """ service = YoukuPlaylists(CLIENT_ID) youku_access_token = youku_get_authenticate() # http://doc.open.youku.com/?docid=377 # 视频ID用逗号来分割,每个专辑最多200个视频,限制单次操作视频的最大个数,默认20 # video_ids=850,860,870,880 # 返回的是专辑ID playlist_id = service.add_videos_to_playlist( access_token=youku_access_token, playlist_id=playlist_id, video_ids=youku_video_id) if playlist_id: return playlist_id else: return False
def delete_video_from_playlist(youku_video_id, playlist_id): """ 在playlist_id的优酷playlist中删除youku_video_id视频 :param youku_video_id: :param playlist_id: :return: """ service = YoukuPlaylists(CLIENT_ID) youku_access_token = youku_get_authenticate() try: id = service.del_videos_from_playlist(access_token=youku_access_token, playlist_id=playlist_id, video_ids=youku_video_id) except: # 如果playlist_id中没有youku_video_id,会提示异常,忽略即可 pass return False if id: return id else: return False
def setUp(self): self.youku = YoukuPlaylists(CLIENT_ID)
class PlaylistsTest(unittest.TestCase): def setUp(self): self.youku = YoukuPlaylists(CLIENT_ID) def test_find_playlist_by_id(self): pl = self.youku.find_playlist_by_id(PL_ID) self.assertIsNotNone(pl['name']) def test_find_playlists_by_ids(self): pl = self.youku.find_playlists_by_ids(PL_ID) self.assertGreater(pl['total'], 0) def test_find_playlists_by_category(self): pl = self.youku.find_playlists_by_category( u'资讯', period='month') self.assertGreater(pl['total'], 0) def test_find_playlists_by_me(self): pl = self.youku.find_playlists_by_me(ACCESS_TOKEN) self.assertIsNotNone(pl['total']) def test_find_playlists_by_userid(self): pl = self.youku.find_playlists_by_userid(USER_ID) self.assertIsNotNone(pl['total']) def test_find_playlists_by_username(self): pl = self.youku.find_playlists_by_username(USER_NAME) self.assertIsNotNone(pl['total']) def test_find_videos_by_playlist(self): pl = self.youku.find_videos_by_playlist(PL_ID) self.assertIsNotNone(pl['total']) def test_playlist_crud(self): pid = self.youku.create_playlist(ACCESS_TOKEN, 'title', 'test,other', description='description') pid = self.youku.update_playlist(ACCESS_TOKEN, pid, 'update title') pid = self.youku.add_videos_to_playlist(ACCESS_TOKEN, pid, VIDEO_ID) pid = self.youku.add_videos_to_playlist(ACCESS_TOKEN, pid, 'XODY4MzMyMzA4') pid = self.youku.set_cover_video_for_playlist(ACCESS_TOKEN, pid, VIDEO_ID) self.youku.find_next_video_in_playlist(pid, VIDEO_ID) pid = self.youku.del_videos_from_playlist(ACCESS_TOKEN, pid, VIDEO_ID) pid = self.youku.destroy_playlist(ACCESS_TOKEN, pid)