def downloadVideo(video: Video, album=None, playlist=None): msg, stream = API.getVideoStreamUrl(video.id, CONF.videoQuality) Printf.video(video, stream) if not aigpy.string.isNull(msg): Printf.err(video.title + "." + msg) return False, msg path = getVideoPath(CONF, video, album, playlist) logging.info("[DL Video] name=" + aigpy.path.getFileName(path) + "\nurl=" + stream.m3u8Url) m3u8content = requests.get(stream.m3u8Url).content if m3u8content is None: Printf.err(video.title + ' get m3u8 content failed.') return False, "Get m3u8 content failed" urls = aigpy.m3u8.parseTsUrls(m3u8content) if len(urls) <= 0: Printf.err(video.title + ' parse ts urls failed.') logging.info("[DL Video] title=" + video.title + "\m3u8Content=" + str(m3u8content)) return False, 'Parse ts urls failed.' check, msg = aigpy.m3u8.downloadByTsUrls(urls, path) # check, msg = aigpy.m3u8.download(stream.m3u8Url, path) if check is True: Printf.success(aigpy.path.getFileName(path)) return True, '' else: Printf.err("\nDownload failed!" + msg + '(' + aigpy.path.getFileName(path) + ')') return False, msg
def __downloadVideo__(conf, video:Video, album=None, playlist=None): if video.allowStreaming is False: Printf.err("Download failed! " + video.title + ' not allow streaming.') return msg, stream = API.getVideoStreamUrl(video.id, conf.videoQuality) Printf.video(video, stream) if not aigpy.string.isNull(msg): Printf.err(video.title + "." + msg) return path = __getVideoPath__(conf, video, album, playlist) logging.info("[DL Video] name=" + aigpy.path.getFileName(path) + "\nurl=" + stream.m3u8Url) check, msg = aigpy.m3u8.download(stream.m3u8Url, path) if check is True: Printf.success(aigpy.path.getFileName(path)) else: Printf.err("\nDownload failed!" + msg + '(' + aigpy.path.getFileName(path) + ')')
def __video__(conf, obj): Printf.video(obj) __downloadVideo__(conf, obj, obj.album)