File size: 3,289 Bytes
b6093b0
 
 
 
21b498c
b6093b0
 
 
 
 
 
 
 
 
8cdcb92
 
 
 
 
 
 
b6093b0
 
2b0ce36
b6093b0
 
 
 
2b0ce36
 
21b498c
 
2b0ce36
b6093b0
2b0ce36
 
 
 
b6093b0
 
21b498c
2b0ce36
21b498c
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_video_to_audio import convert_video_to_audio
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}.m4a")
            convert_video_to_audio(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}.m4a")
        if not os.path.exists(INAUDIO_PATH):
            convert_video_to_audio(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
        )