def add_styles(subs, style_list=None): """ Add styles to the subtitle file based on the style strings in each individual subtitle """ if style_list is None: style_list = [] for style in style_list: new_style = SSAStyle() # Number for position refers to the number on a keypad if 'top_left' in style: new_style.alignment = 7 elif 'top_right' in style: new_style.alignment = 9 elif 'bottom_left' in style: new_style.alignment = 1 elif 'bottom_right' in style: new_style.alignment = 3 elif 'left' in style: new_style.alignment = 4 elif 'right' in style: new_style.alignment = 6 elif 'top' in style: new_style.alignment = 8 elif 'bottom' in style: new_style.alignment = 2 # Setting the RGB values for the text if 'pred' in style: new_style.primarycolor = Color(255, 0, 0, 0) elif 'pblue' in style: new_style.primarycolor = Color(0, 0, 255, 0) elif 'pgreen' in style: new_style.primarycolor = Color(0, 255, 0, 0) elif 'pwhite' in style: new_style.primarycolor = Color(255, 255, 255, 0) # Setting the RGB values for the text's background if 'bred' in style: new_style.backcolor = Color(255, 0, 0, 0) elif 'bblue' in style: new_style.backcolor = Color(0, 0, 255, 0) elif 'bgreen' in style: new_style.backcolor = Color(0, 255, 0, 0) elif 'bwhite' in style: new_style.backcolor = Color(255, 255, 255, 0) # Setting different font types if 'bold' in style: new_style.bold = True if 'italic' in style: new_style.italic = True subs.styles[style] = new_style return subs
def merge(top_file_path: Path, bot_file_path: Path, outfile: Path): top_sub = pysubs2.load(str(top_file_path), encoding=charset_detect(top_file_path)) bot_sub = pysubs2.load(str(bot_file_path), encoding=charset_detect(bot_file_path)) '''[V4+ Styles] Format: Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,OutlineColour,BackColour,Bold,Italic,Underline,StrikeOut,ScaleX,ScaleY,Spacing,Angle,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,Encoding Style: Default,Arial, 16, &H00FFFFFF, &H00FFFFFF, &H00000000, &H00000000,-1, 0, 0, 0 ,100 ,100 ,0 ,0 ,1 ,3 ,0 ,2 ,10 ,10 ,10 ,0 Style: Top ,Arial ,16 ,&H00F9FFFF ,&H00FFFFFF ,&H00000000 ,&H00000000,-1 ,0 ,0 ,0 ,100 ,100 ,0 ,0 ,1 ,3 ,0 ,8 ,10 ,10 ,10 ,0 Style: Mid ,Arial ,16 ,&H0000FFFF ,&H00FFFFFF ,&H00000000 ,&H00000000,-1 ,0 ,0 ,0 ,100 ,100 ,0 ,0 ,1 ,3 ,0 ,5 ,10 ,10 ,10 ,0 Style: Bot ,Arial ,16 ,&H00F9FFF9 ,&H00FFFFFF ,&H00000000 ,&H00000000,-1 ,0 ,0 ,0 ,100 ,100 ,0 ,0 ,1 ,3 ,0 ,2 ,10 ,10 ,10 ,0 ''' style_top = SSAStyle() style_bot = SSAStyle() style_top.primarycolor = Color(249, 255, 255) style_bot.primarycolor = Color(249, 255, 249) style_bot.secondarycolor = Color(255, 255, 255) style_top.secondarycolor = Color(255, 255, 255) style_top.outline = 1.0 style_bot.outline = 1.0 style_top.shadow = 0.0 style_bot.shadow = 0.0 style_top.alignment = 8 style_bot.alignment = 2 # style_top.encoding # не знаю что значит, по умолчанию 1, в примере 0, оставлю 1 bot_sub.styles['bot'] = style_bot bot_sub.styles['top'] = style_top for line in bot_sub: line.style = 'bot' for line in top_sub: line.style = 'top' bot_sub.append(line) bot_sub.styles["Default"].fontsize = 14.0 bot_sub.styles["Default"].shadow = 0.5 bot_sub.styles["Default"].outline = 1.0 bot_sub.save(str(outfile))