import openai from pytube import YouTube import argparse import os import io parser = argparse.ArgumentParser() parser.add_argument("--link", help="youtube video link here", default=None, type=str, required=False) parser.add_argument("--local_path", help="local video path here", default=None, type=str, required=False) parser.add_argument("--text_file", help="text file path here", default=None, type=str, required=False) # New argument parser.add_argument("--download", help="download path", default='./downloads', type=str, required=False) parser.add_argument("--result", help="translate result path", default='./results', type=str, required=False) parser.add_argument("--video_name", help="video name", default='placeholder', type=str, required=False) parser.add_argument("--model_name", help="model name only support text-davinci-003 and gpt-3.5-turbo", type=str, required=False, default="gpt-3.5-turbo") args = parser.parse_args() if args.link is None and args.local_path is None and args.text_file is None: print("need video source or text file") exit() # set openai api key openai.api_key = os.getenv("OPENAI_API_KEY") DOWNLOAD_PATH = args.download RESULT_PATH = args.result VIDEO_NAME = args.video_name model_name = args.model_name # get source audio if args.link is not None and args.local_path is None: # Download audio from YouTube video_link = args.link video = None audio = None try: video = YouTube(video_link) audio = video.streams.filter(only_audio=True, file_extension='mp4').first() if audio: audio.download(DOWNLOAD_PATH) print('Download Completed!') else: print("Error: Audio stream not found") except Exception as e: print("Connection Error") print(e) if audio: audio_file = open('{}/{}'.format(DOWNLOAD_PATH, audio.default_filename), "rb") VIDEO_NAME = audio.default_filename.split('.')[0] else: print("Error: Unable to download audio from the YouTube video") exit() elif args.local_path is not None: # Read from local audio_file = open(args.local_path, "rb") # Instead of using the script_en variable directly, we'll use script_input if args.text_file is not None: with open(args.text_file, 'r') as f: script_input = f.read() else: # perform speech-to-text and save it in