import os.path import opencc from pytube import YouTube import ssl import subprocess from utils.Logger import log from datetime import datetime, timedelta from dateutil.relativedelta import relativedelta ssl._create_default_https_context = ssl._create_stdlib_context def convert_string_to_time(string): """ :param string: :return: """ current_time = datetime.now() if "天前" in string: days = int(string.split("天前")[0]) converted_time = current_time - relativedelta(days=days) elif "周前" in string: weeks = int(string.split("周前")[0]) converted_time = current_time - relativedelta(weeks=weeks) elif "月前" in string: months = int(string.split("月前")[0]) converted_time = current_time - relativedelta(months=months) elif "年前" in string: years = int(string.split("年前")[0]) converted_time = current_time - relativedelta(years=years) else: raise ValueError("Invalid string format") timestamp = converted_time.timestamp() return timestamp def convert_to_traditional(simplified_text): """ 将简体中文文本转换为繁体中文文本。 Args: simplified_text (str): 要转换的简体中文文本。 Returns: str: 转换后的繁体中文文本。 """ converter = opencc.OpenCC('s2t.json') # 创建简体中文到繁体中文的转换器 traditional_text = converter.convert(simplified_text) # 进行转换 return traditional_text def pytube_download(link, file_dir): """ 下载指定链接的 YouTube 视频并保存到指定目录。 参数: - link: 字符串,YouTube 视频的链接。 - file_dir: 字符串,视频保存的目录路径。 返回值: - 如果下载成功,则返回 True。 - 如果下载失败,则返回 False。 """ yt = YouTube(link) # 创建 YouTube 对象 # yt.register_on_complete_callback(callback) yt.streams.filter(progressive=True, file_extension='mp4') # 过滤指定条件的视频流 steam = yt.streams.get_by_itag(22) # 获取指定标签的视频流 try: steam.download(file_dir) # 下载视频并保存到指定目录 return True except: print("下载失败") # 捕获下载异常并输出错误信息 return False def yt_dlp_download(url, name): file_dir = os.path.abspath("../") options = f'-v' network_options = f'-o "{os.path.join(file_dir, "network-assets-reptile", "reptile_data", name, "%(id)s.%(ext)s")}"' geo = "" # --get-url video_selection = f'' download_options = "" other_options = f'--verbose' # 要执行的 shell 命令 command = f'yt-dlp {options} {network_options} {geo} {video_selection} {download_options} {other_options} -- {url}' # 使用 subprocess 调用 shell 命令 result = subprocess.run(command, shell=True, capture_output=True, text=True) # 检查命令执行结果 if result.returncode == 0: # 命令成功执行,输出结果 # log.debug(str(result.stdout)) return True else: # 命令执行失败,输出错误信息 # log.debug(str(result.stderr)) return False