def fetch_all(self, cookie=None, name_pattern=Util.Config.SET_AS_CODE, quality=None): """ 自动获取用户与频道名下的所有视频信息 :param cookie: 权限信息 :param quality: 下载视频质量 :param name_pattern: 路径命名方式 :return: 所有视频的av号列表 """ av_list = [] self.info_list = [] # 确定对象类型 if isinstance(self.obj, Space.User): obj_code = self.obj.uid elif isinstance(self.obj, Space.Channel): obj_code = self.obj.cid else: raise Util.ParameterError('该类型对象无法自动加载') # 逐级确定储存路径 if name_pattern == Util.Config.SET_AS_NAME: self.obj.sync() obj_name = Util.legalize_name(self.obj.name) else: obj_name = obj_code album_list = self.obj.get_album_list() for album in album_list: if name_pattern == Util.Config.SET_AS_NAME: album.sync() album_name = Util.legalize_name(album.name) else: album_name = album.aid video_list = album.get_video_list() for video in video_list: video.sync(cookie, quality) if name_pattern == Util.Config.SET_AS_NAME: video_name = Util.legalize_name(video.name) else: video_name = video.aid video_name = '{}_P{}_{}'.format(video_name, video.page, video.quality[1]) self.info_list.append({ 'obj': self.obj, 'obj_name': obj_name, 'album': album, 'album_name': album_name, 'video': video, 'video_name': video_name }) av_list.append(album.aid) av_list = list(set(av_list)) return av_list
def fetch_all(self, cookie=None, name_pattern=Util.Config.SET_AS_CODE, quality=None): """ 自动获取用户与频道名下的所有视频信息 :param cookie: 权限信息 :param quality: 下载视频质量 :param name_pattern: 路径命名方式 :return: 所有视频的av号列表 """ av_list = [] self.info_list = [] # 确定对象类型 if isinstance(self.obj, Space.User): obj_code = self.obj.uid elif isinstance(self.obj, Space.Channel): obj_code = self.obj.cid else: raise Util.ParameterError('该类型对象无法自动加载') # 逐级确定储存路径 if name_pattern == Util.Config.SET_AS_CODE: obj_name = obj_code elif name_pattern == Util.Config.SET_AS_NAME: self.obj.sync() obj_name = Util.legalize_name(self.obj.name) elif name_pattern == Util.Config.SET_AS_PAGE: self.obj.sync() obj_name = Util.legalize_name(self.obj.name) else: obj_name = "unknown" album_list = self.obj.get_album_list() for album in tqdm(album_list, desc="Fetching..."): try: album.sync(cookie) except Util.RunningError: print("404 or 403 on: %s, skipped" % album.aid) continue album_name = album.album_name(name_pattern) video_list = album.get_video_list() for video in video_list: video.sync(cookie, quality) video_name = video.video_name(name_pattern) self.info_list.append({ 'obj': (obj_name, self.obj), 'album': (album_name, album), 'video': (video_name, video) }) av_list.append(album.aid) av_list = list(set(av_list)) return av_list
def album_name(self, name_pattern=Util.Config.SET_AS_CODE): """ 辅助生成稿件文件的名称 :param name_pattern: 命名模式 :return: 经过拼接的稿件文件名称 """ if name_pattern == Util.Config.SET_AS_CODE: name = self.aid elif name_pattern == Util.Config.SET_AS_NAME: name = self.name elif name_pattern == Util.Config.SET_AS_PAGE: name = self.name else: name = "unknown" return Util.legalize_name(name)
def video_name(self, name_pattern=Util.Config.SET_AS_CODE): """ 辅助生成视频文件的名称 :param name_pattern: 命名模式 :return: 经过拼接的视频文件名称 """ if name_pattern == Util.Config.SET_AS_CODE: name = self.cid elif name_pattern == Util.Config.SET_AS_NAME: name = self.album.name elif name_pattern == Util.Config.SET_AS_PAGE: name = self.name else: name = "unknown" name = Util.legalize_name(name) return "{}_P{}_{}".format(name, self.page, self.quality[1])