File size: 3,273 Bytes
b6093b0 2b0ce36 b6093b0 8cdcb92 b6093b0 2b0ce36 b6093b0 2b0ce36 b6093b0 2b0ce36 b6093b0 2b0ce36 b6093b0 2b0ce36 8cdcb92 2b0ce36 b6093b0 8cdcb92 b6093b0 8cdcb92 b6093b0 8cdcb92 b6093b0 8cdcb92 b6093b0 8cdcb92 b6093b0 8cdcb92 b6093b0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
from argparse import ArgumentParser
from utils.download_video import download_video
from utils.transcriber import transcriber
from utils.subtitler import subtitler
from utils.convert_mp4_to_mp3 import convert_mp4_to_mp3
import logging, os
from tqdm import tqdm
logging.basicConfig(filename='main.log',
encoding='utf-8',
level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s',
datefmt='%m/%d/%Y %I:%M:%S %p')
def main(video_url:str,
invideo_filename:str,
max_words_per_line:int,
fontsize:int,
font:str,
bg_color:str,
text_color:str
):
INVIDEO_DIR = os.path.join('data/',invideo_filename)
os.makedirs(INVIDEO_DIR, exist_ok=True)
SRT_PATH = os.path.join(INVIDEO_DIR, f"{invideo_filename}.srt")
OUTVIDEO_PATH = os.path.join(INVIDEO_DIR, f"result_{invideo_filename}.mp4")
with tqdm(total=100, desc="Overall Progress") as pbar:
if video_url != None:
INVIDEO_PATH = download_video(video_url, INVIDEO_DIR, invideo_filename)
pbar.update(25)
INAUDIO_PATH = os.path.join(INVIDEO_DIR, f"{invideo_filename}.mp3")
convert_mp4_to_mp3(INVIDEO_PATH,INAUDIO_PATH)
pbar.update(25)
if not os.path.exists(SRT_PATH):
transcriber(INAUDIO_PATH, SRT_PATH, max_words_per_line)
pbar.update(25)
subtitler(INVIDEO_PATH, SRT_PATH, OUTVIDEO_PATH,fontsize, font, bg_color, text_color)
pbar.update(25)
return
INVIDEO_PATH = os.path.join(INVIDEO_DIR, f"{invideo_filename}.mp4")
INAUDIO_PATH = os.path.join(INVIDEO_DIR, f"{invideo_filename}.mp3")
if not os.path.exists(INAUDIO_PATH):
convert_mp4_to_mp3(INVIDEO_PATH,INAUDIO_PATH)
pbar.update(50)
if not os.path.exists(SRT_PATH):
transcriber(INAUDIO_PATH, SRT_PATH, max_words_per_line)
pbar.update(25)
subtitler(INVIDEO_PATH, SRT_PATH, OUTVIDEO_PATH, fontsize, font, bg_color, text_color)
pbar.update(25)
if __name__ == '__main__':
parser = ArgumentParser()
parser.add_argument('--invideo_filename', required=True, type=str, help='Filename to caption.')
parser.add_argument('--video_url', required=False, default=None, type=str, help='A video file to be subtitled (Optional)')
parser.add_argument("--max_words_per_line", type=int, default=None, help="the maximum number of words in a segment. (int)")
parser.add_argument('--fontsize', required=False, default=32, type=int, help='Font size for captions (int)')
parser.add_argument('--font', required=False, default="FuturaPTHeavy", type=str, help='Font style for captions (str)')
parser.add_argument('--bg_color', required=False, default="#070a13b3", type=str, help='Hex color value for caption background colour. (str)')
parser.add_argument('--text_color', required=False, default="white", type=str, help='color value for caption text. (str)')
args = parser.parse_args()
# Example usage
main(args.video_url,
args.invideo_filename,
args.max_words_per_line,
args.fontsize,
args.font,
args.bg_color,
args.text_color
) |