Srt2vtt in Shell Script (Beta)
Publicado por Perfil removido (última atualização em 17/12/2018)
[ Hits: 1.651 ]
Este script converte legendas.srt para webvtt utilizando ffmpeg, um programa em linha de comando que é composto de uma coleção de software livre e bibliotecas de código aberto.
Para converter a legenda.srt você precisa informar a codificação (encode) da legenda.srt, por exemplo: ASCII text
Uma forma simples de descobrir qual é a codificação do arquivo é utilizando o comando file. Você também pode baixar o encode.txt ou copiar e colar a lista de codificações: https://trac.ffmpeg.org/attachment/ticket/2431/sub_charenc_parameters.txt
Renomeie o download acima para encode.txt. O arquivo encode.txt deve estar no seu diretorio $HOME.
#/usr/bin/env bash # PATH log_path=/tmp/srt2vtt.log # the output of ffmpeg list_path=$(find $HOME -name enccode.txt) # ffmpeg sub charenc parameters (2006) if [ -z $list_path ];then list_not_found=true ;else list_not_found=false ;fi # COLORS red="\033[1;31m" green="\033[1;32m" end="\033[0m" srt=$2 # subtile.srt check=$(file asd.srt | cut -d':' -f2 | tr -d [:blank:]) # verifies that ffmpeg is installed if [[ ! -e $(which ffmpeg) ]];then echo -e "${red}ffmpeg isn't installed ${end}" ; exit 1 ;fi _whitespaces(){ if [ -n "$srt" -a -e "$srt" ];then file $srt if [ $? -ne 0 ];then echo -e "${red}\nError: whitespaces " echo -e "Please run srt2vtt -r to Rename the subtitle${end}\n" exit 1 fi fi } _fileExist(){ if ! [ -e "$srt" ];then echo -e "${red}\nError: no such file or directory${end}" exit 1 fi } _HELP_(){ echo """ srt2vtt version 1.0 Usage: srt2vtt <option> <subtitle.srt> -c ) Convert srt to vtt whitout verbose -h ) show this Help message -v ) enable Verbose mode and convert -r ) Rename the subtitle (use in case of the sub has whitespaces) -l ) shows the last sub log by erickDarko 2018 """ exit 0 } _rename(){ if [[ ! -e $(which python3) ]];then echo -e "${red}python3 isn't installed ${end}" ; exit 1 ;fi echo """ from os import listdir ls = listdir() for c,v in enumerate(ls): if 'srt' in v: print('mv',end=' ') print('\"{}\" \"{}\"'.format(ls[c],v.replace(' ','_'))) print() """ > rename.py python3 rename.py > rename chmod +x rename ; ./rename 2> /dev/null ; sleep 0.5s ; rm rename* echo ; exit 0 } _convert(){ if [ "$check" == "empty" ];then echo -e "${red}Error: empty file${end}"; exit 2 ;fi _fileExist # verifies if the file exist _whitespaces # verifies whitespaces len=$(expr ${#srt} - 4) # length of the subtile without the extension ".srt" vtt=$(echo $srt | cut -c-$len) if [ -e $vtt.vtt ];then rm -iv $vtt.vtt ;fi # delete the subtitle if it already exists encode=$(file $srt | cut -d":" -f2 | cut -d" " -f2) # get the file encode if [ $list_not_found == false ];then # verifies if the encode is on the $list_path list=$(cat $list_path | grep "$encode") if [ $1 == false ];then for enc in $list;do ffmpeg -fix_sub_duration -sub_charenc $enc -i $srt $vtt.vtt &> $log_path done else for enc in $list;do ffmpeg -fix_sub_duration -sub_charenc $enc -i $srt $vtt.vtt 0> $log_path done fi if [ $? -ne 0 ];then echo -ne "${red}Error: ${end}" echo -e "${red}$(cat $log_path | tail -n1)${end}" rm $vtt.vtt &> /dev/null exit 2 fi else while true;do echo "File information: $(file $srt)" read -p "File encode: " encode if [ $1 == false ];then ffmpeg -fix_sub_duration -sub_charenc $encode -i $srt $vtt.vtt &> $log_path else ffmpeg -fix_sub_duration -sub_charenc $encode -i $srt $vtt.vtt 0> $log_path fi if [ $? -ne 0 ];then echo -ne "${red}Error: ${end}" echo -e "${red}$(cat $log_path | tail -n1)${end}" rm $vtt.vtt &> /dev/null exit 2 fi break done fi } # srt2vtt parameters case $1 in -h) _HELP_ ;; --help) __HELP__ ;; -c) _convert false ;; -v) _convert true ;; -r) _rename ;; -l) less $log_path ;; *) echo -e "${red}Error: no option was given${end}" ; _HELP_ ;; esac if [ -e $vtt.vtt ];then echo -e "\nENCODE: $encode" l=$(wc -l $vtt.vtt | cut -d" " -f1) # lines in the subtitle if [ $l -eq 0 ];then echo -e "[ ${red}${l}${end} ]" else echo -e "[ ${green}${l}${end} ]" rm -iv $srt # remove the original subtitle fi fi
Faciliando copiar DVD com 2 gravadoras pelo terminal
Copiando um arquivo matriz para vários outros com nomes diferentes...
Script para fazer download no rapidshare com conta premium
Nenhum coment�rio foi encontrado.
Atualizando o Passado: Linux no Lenovo G460 em 2025
aaPanel - Um Painel de Hospedagem Gratuito e Poderoso
O macete do Warsaw no Linux Mint e cia
Um modo leve de ouvir/ver áudio/vídeo da internet em máquinas pererecas
Resolver algumas mensagens de erro do SSH
Instalar módulo de segurança do Banco do Brasil Warsaw do tipo .run
Sem espaço na partição home (0)
O que você está ouvindo agora? [2] (190)
Procrastinação e autossabotagem são problemas muito comuns na sociedad... (5)
warsaw parou de funcionar após atualização do sistema (solução) (10)