def upload_video(upload_dict: dict) -> None: upload_way_dict = {'bd': BDUpload, 's3': S3Upload} upload_way = upload_way_dict.get(config['upload_by']) uploader = upload_way() user_config = get_user(upload_dict['User']) result = uploader.upload_item(f"{upload_dict['Path']}", upload_dict['Title']) if not result: raise RuntimeError('Upload error') if config['upload_by'] == 'bd': share_url = uploader.share_item(upload_dict['Title']) if config['enable_mongodb']: data = {"Title": upload_dict['Origin_Title'], "Date": upload_dict['Date'], "Link": share_url, "ASS": upload_dict['ASS']} insert_video(upload_dict['User'], data) elif config['upload_by'] == 's3': if config['enable_mongodb']: share_url = f"gets3/{quote(upload_dict['Title'])}" data = {"Title": upload_dict['Origin_Title'], "Date": datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "Link": share_url, "ASS": upload_dict['ASS']} insert_video(upload_dict['User'], data) else: raise RuntimeError(f'Upload {upload_dict["Title"]} failed') pub = Publisher() data = {'Msg': f"[下载提示] {upload_dict['Title']} 已上传, 请查看https://matsuri.design/", 'User': user_config['user']} pub.do_publish(data, 'bot')
def send_hls(title, ddir, path): pub = Publisher() hls_dict = { 'Title': title, 'Ddir': ddir, 'Path': path, } pub.do_publish(hls_dict, 'hls')
def upload_record(self, ddir: str) -> None: pub = Publisher() upload_dict = { 'Title': self.video_dict['Title'] + '.txt', 'Target': self.video_dict['Target'], 'Path': f'{ddir}/{self.video_dict["Title"]}.txt', 'User': self.video_dict['User'], 'Record': True, 'Origin_Title': self.video_dict['Origin_Title'] } pub.do_publish(upload_dict, 'upload')
def upload_record(upload_dict: dict) -> None: user_config = get_user(upload_dict['User']) uploader = BDUpload() result = uploader.upload_item(upload_dict['Path'], upload_dict['Title']) if not result: raise RuntimeError('Upload error') if config['upload_by'] == 'bd': share_url = uploader.share_item(upload_dict['Title']) if config['enable_mongodb']: data = {"Title": upload_dict['Origin_Title'], "Date": datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "Record": share_url} insert_video(upload_dict['User'], data) pub = Publisher() data = {'Msg': f"[同传提示] {upload_dict['Title']} 已记录, 请查看https://matsuri.design/", 'User': user_config['user']} pub.do_publish(data, 'bot')
def send_upload(video_dict, path): if not config['enable_upload']: return pub = Publisher() ass, txt = get_trans_ass(video_dict['Title'], video_dict['Start_timestamp'], video_dict['End_timestamp']) upload_dict = { 'Title': video_dict['Title'], 'Filename': video_dict['Filename'], 'Target': video_dict['Target'], 'Date': datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'Path': path, 'User': video_dict['User'], 'Origin_Title': video_dict['Origin_Title'], 'ASS': ass, 'Txt': txt } pub.do_publish(upload_dict, 'upload')
def upload_video(upload_dict: dict) -> None: upload_way_dict = {'bd': BDUpload, 's3': S3Upload} upload_way = upload_way_dict.get(config['upload_by']) uploader = upload_way() user_config = get_user(upload_dict['User']) result = uploader.upload_item(f"{upload_dict['Path']}", upload_dict['Filename']) if not result: raise RuntimeError('Upload error') if config['upload_by'] == 'bd': share_url = uploader.share_item(upload_dict['Filename']) if config['enable_mongodb']: data = { "Title": upload_dict['Origin_Title'], "Date": upload_dict['Date'], "Link": share_url, "ASS": upload_dict['ASS'], "Txt": upload_dict['Txt'] } insert_video(upload_dict['User'], data) elif config['upload_by'] == 's3': if config['enable_mongodb']: share_url = f'https://matsuri.design/{config["s3_bucket"]}/{quote(upload_dict["Filename"])}' m3u8_url = f'https://matsuri.design/{config["s3_bucket"]}/{quote(upload_dict["Title"]) + ".m3u8"}' data = { "Title": upload_dict['Origin_Title'], "Date": upload_dict['Date'], "Link": share_url, "ASS": upload_dict['ASS'], "Txt": upload_dict['Txt'], "M3U8": m3u8_url } insert_video(upload_dict['User'], data) else: raise RuntimeError(f'Upload {upload_dict["Filename"]} failed') pub = Publisher() data = { 'Msg': f"[下载提示] {upload_dict['Title']} 已上传, 请查看https://matsuri.design/", 'User': user_config['user'] } pub.do_publish(data, 'bot')
def process_video(video_dict): """ 处理直播视频,包含bot的发送,视频下载,视频上传和存入数据库 :param video_dict: 含有直播视频数据的dict :return: None """ user_config: dict = get_user(video_dict['User']) if not user_config['download']: return None ddir: str = get_ddir(user_config) check_ddir_is_exist(ddir) logger.info(f'{video_dict["Provide"]} Found A Live, starting downloader') video_dict['Origin_Title'] = video_dict['Title'] video_dict['Title'] = AdjustFileName(video_dict['Title']).adjust(ddir) video_dict['Start_timestamp'] = int(datetime.now().timestamp() * 1000) if video_dict["Provide"] == 'Youtube': result: str = downloader(r"https://www.youtube.com/watch?v=" + video_dict['Ref'], video_dict['Title'], config['proxy'], ddir, user_config, config['youtube_quality']) else: result: str = downloader(video_dict['Ref'], video_dict['Title'], config['proxy'], ddir, user_config) pub = Publisher() if result: video_dict['End_timestamp'] = int(datetime.now().timestamp() * 1000) data = {'Msg': f"[下载提示] {result} 已下载完成,等待上传", 'User': user_config['user']} logger.warning(data) pub.do_publish(data, 'bot') if config['enable_upload']: upload_dict = { 'Title': result, 'Target': video_dict['Target'], 'Date': video_dict['Date'], 'Path': f'{ddir}/{result}', 'User': video_dict['User'], 'Origin_Title': video_dict['Origin_Title'], 'ASS': get_ass(video_dict) } pub.do_publish(upload_dict, 'upload') pub.do_publish(video_dict['Target'], 'cq')
def send_bot(result, user): pub = Publisher() data = {'Msg': f"[下载提示] {result} 已下载完成,等待上传", 'User': user} logger.warning(data) pub.do_publish(data, 'bot')
def uploader(filename, path): upload_dict = {'Path': path, 'Filename': filename, 'Is_m3u8': True} pub = Publisher() pub.do_publish(upload_dict, 'upload')