Srt2vtt in Shell Script (Beta)
Publicado por Perfil removido (última atualização em 17/12/2018)
[ Hits: 1.492 ]
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
Firewall ideal para Servidor de Arquivos (iptables).
Calculadora com 4 operações e cálculo de porcentagem
Automatizar o controle de um servidor de compartilhamentos Samba
Cálculo de número perfeito único
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Seria referente ao Kali Linux (2)
Certificação Linux e prestação de serviços (1)