Ejemplo n.º 1
0
def main():  # pylint: disable=too-many-branches, too-many-statements, too-many-locals
    """
    Run autosub as a command-line program.
    """

    args = options.get_cmd_args()

    if args.https_proxy:
        os.environ['https_proxy'] = args.https_proxy

    if args.http_proxy:
        os.environ['http_proxy'] = args.http_proxy

    if args.proxy_username:
        os.environ['proxy_username'] = args.proxy_username

    if args.proxy_password:
        os.environ['proxy_password'] = args.proxy_password

    try:
        if cmdline_utils.list_args(args):
            raise exceptions.AutosubException(_("\nAll works done."))

        if not args.yes:
            try:
                input_m = raw_input
            except NameError:
                input_m = input
        else:
            input_m = None

        styles_list = []
        validate_result = cmdline_utils.validate_io(args, styles_list)

        if validate_result == 0:
            if not constants.FFMPEG_CMD:
                raise exceptions.AutosubException(
                    _("Error: Dependency ffmpeg"
                      " not found on this machine."))
            if not constants.FFPROBE_CMD:
                raise exceptions.AutosubException(
                    _("Error: Dependency ffprobe"
                      " not found on this machine."))

            cmdline_utils.fix_args(args)

            if args.audio_process:
                args.audio_process = {k.lower() for k in args.audio_process}
                args.audio_process = \
                    args.audio_process & constants.DEFAULT_AUDIO_PRCS_MODE_SET
                if not args.audio_process:
                    raise exceptions.AutosubException(
                        _("Error: The args of \"-ap\"/\"--audio-process\" are wrong."
                          "\nNo works done."))
                if 'o' in args.audio_process:
                    args.keep = True
                    prcs_file = ffmpeg_utils.audio_pre_prcs(
                        filename=args.input,
                        is_keep=args.keep,
                        cmds=args.audio_process_cmd,
                        output_name=args.output,
                        input_m=input_m)
                    if not prcs_file:
                        raise exceptions.AutosubException(_("No works done."))

                    args.input = prcs_file
                    raise exceptions.AutosubException(
                        _("Audio pre-processing complete.\nAll works done."))

                if 's' in args.audio_process:
                    args.keep = True

                if 'y' in args.audio_process:
                    prcs_file = ffmpeg_utils.audio_pre_prcs(
                        filename=args.input,
                        is_keep=args.keep,
                        cmds=args.audio_process_cmd,
                        output_name=args.output,
                        input_m=input_m)
                    args.audio_split_cmd = \
                        args.audio_split_cmd.replace(
                            "-vn -ac [channel] -ar [sample_rate] ", "")
                    if not prcs_file:
                        print(
                            _("Audio pre-processing failed."
                              "\nUse default method."))
                    else:
                        args.input = prcs_file
                        print(_("Audio pre-processing complete."))

            else:
                args.audio_split_cmd = \
                    args.audio_split_cmd.replace(
                        "[channel]",
                        "{channel}".format(channel=args.api_audio_channel))
                args.audio_split_cmd = \
                    args.audio_split_cmd.replace(
                        "[sample_rate]",
                        "{sample_rate}".format(sample_rate=args.api_sample_rate))

                if args.api_suffix == ".ogg":
                    # regard ogg as ogg_opus
                    args.audio_split_cmd = \
                        args.audio_split_cmd.replace(
                            "-vn",
                            "-vn -c:a libopus")

            cmdline_utils.validate_aovp_args(args)
            fps = cmdline_utils.get_fps(args=args, input_m=input_m)
            cmdline_utils.audio_or_video_prcs(args,
                                              fps=fps,
                                              input_m=input_m,
                                              styles_list=styles_list)

        elif validate_result == 1:
            cmdline_utils.validate_sp_args(args)
            fps = cmdline_utils.get_fps(args=args, input_m=input_m)
            cmdline_utils.subs_trans(args,
                                     input_m=input_m,
                                     fps=fps,
                                     styles_list=None)

    except KeyboardInterrupt:
        print(_("\nKeyboardInterrupt. Works stopped."))
        return 1
    except pysubs2.exceptions.Pysubs2Error:
        print(_("\nError: pysubs2.exceptions. Check your file format."))
        return 1
    except exceptions.AutosubException as err_msg:
        print(err_msg)
        return 0

    print(_("\nAll works done."))
    return 0
Ejemplo n.º 2
0
def main():  # pylint: disable=too-many-branches, too-many-statements, too-many-locals
    """
    Run autosub as a command-line program.
    """

    is_pause = False

    # todo1: move into constants to support locale and dependency input
    option_parser = options.get_cmd_parser()
    if len(sys.argv) > 1:
        args = option_parser.parse_args()
    else:
        option_parser.print_help()
        new_argv = input(_("\nInput args(without \"autosub\"): "))
        args = option_parser.parse_args(shlex.split(new_argv))
        is_pause = True

    if args.https_proxy:
        os.environ['https_proxy'] = args.https_proxy

    if args.http_proxy:
        os.environ['http_proxy'] = args.http_proxy

    if args.proxy_username:
        os.environ['proxy_username'] = args.proxy_username

    if args.proxy_password:
        os.environ['proxy_password'] = args.proxy_password

    try:
        if args.speech_config:
            cmdline_utils.validate_config_args(args)

        if cmdline_utils.list_args(args):
            raise exceptions.AutosubException(_("\nAll works done."))

        if not args.yes:
            input_m = input
        else:
            input_m = None

        styles_list = []
        result = cmdline_utils.validate_io(args, styles_list)

        if result:
            if not constants.FFMPEG_CMD:
                raise exceptions.AutosubException(
                    _("Error: Dependency ffmpeg"
                      " not found on this machine."))
            if not constants.FFPROBE_CMD:
                raise exceptions.AutosubException(
                    _("Error: Dependency ffprobe"
                      " not found on this machine."))

            cmdline_utils.fix_args(args)

            if args.audio_process:
                args.audio_process = {k.lower() for k in args.audio_process}
                args.audio_process = \
                    args.audio_process & constants.DEFAULT_AUDIO_PRCS_MODE_SET
                if not args.audio_process:
                    raise exceptions.AutosubException(
                        _("Error: The args of \"-ap\"/\"--audio-process\" are wrong."
                          "\nNo works done."))
                if 'o' in args.audio_process:
                    args.keep = True
                    prcs_file = ffmpeg_utils.audio_pre_prcs(
                        filename=args.input,
                        is_keep=args.keep,
                        cmds=args.audio_process_cmd,
                        output_name=args.output,
                        input_m=input_m)
                    if not prcs_file:
                        raise exceptions.AutosubException(_("No works done."))

                    args.input = prcs_file
                    raise exceptions.AutosubException(
                        _("Audio pre-processing complete.\nAll works done."))

                if 's' in args.audio_process:
                    args.keep = True

                if 'y' in args.audio_process:
                    prcs_file = ffmpeg_utils.audio_pre_prcs(
                        filename=args.input,
                        is_keep=args.keep,
                        cmds=args.audio_process_cmd,
                        output_name=args.output,
                        input_m=input_m)
                    args.audio_split_cmd = \
                        args.audio_split_cmd.replace(
                            "-vn -ac [channel] -ar [sample_rate] ", "")
                    if not prcs_file:
                        print(
                            _("Audio pre-processing failed."
                              "\nUse default method."))
                    else:
                        args.input = prcs_file
                        print(_("Audio pre-processing complete."))

            else:
                if args.audio_split_cmd == constants.DEFAULT_AUDIO_SPLT:
                    # if user doesn't modify the audio_split_cmd
                    if args.api_suffix == ".ogg":
                        # regard ogg as ogg_opus
                        args.audio_split_cmd = \
                            args.audio_split_cmd.replace(
                                "-vn",
                                "-vn -c:a libopus")
                    elif args.api_suffix == ".pcm":
                        # raw pcm
                        args.audio_split_cmd = \
                            args.audio_split_cmd.replace(
                                "-vn",
                                "-vn -c:a pcm_s16le -f s16le")

                args.audio_split_cmd = \
                    args.audio_split_cmd.replace(
                        "[channel]",
                        "{channel}".format(channel=args.api_audio_channel))
                args.audio_split_cmd = \
                    args.audio_split_cmd.replace(
                        "[sample_rate]",
                        "{sample_rate}".format(sample_rate=args.api_sample_rate))

            cmdline_utils.validate_aovp_args(args)
            fps = cmdline_utils.get_fps(args=args, input_m=input_m)
            cmdline_utils.audio_or_video_prcs(args,
                                              fps=fps,
                                              input_m=input_m,
                                              styles_list=styles_list)

        else:
            result = cmdline_utils.validate_sp_args(args)
            fps = cmdline_utils.get_fps(args=args, input_m=input_m)
            if result:
                args.output_files = args.output_files & \
                                    constants.DEFAULT_SUB_MODE_SET
                if not args.output_files:
                    raise exceptions.AutosubException(
                        _("Error: No valid \"-of\"/\"--output-files\" arguments."
                          ))
                cmdline_utils.sub_trans(args,
                                        input_m=input_m,
                                        fps=fps,
                                        styles_list=None)
            else:
                cmdline_utils.sub_conversion(args, input_m=input_m, fps=fps)

        raise exceptions.AutosubException(_("\nAll works done."))

    except KeyboardInterrupt:
        print(_("\nKeyboardInterrupt. Works stopped."))
    except pysubs2.exceptions.Pysubs2Error:
        print(_("\nError: pysubs2.exceptions. Check your file format."))
    except exceptions.AutosubException as err_msg:
        print(err_msg)

    if is_pause:
        input(_("Press Enter to exit..."))
    return 0
Ejemplo n.º 3
0
def main():  # pylint: disable=too-many-branches, too-many-statements, too-many-locals
    """
    Run autosub as a command-line program.
    """

    args = options.get_cmd_args()

    if args.https_proxy:
        os.environ['https_proxy'] = args.https_proxy

    if args.http_proxy:
        os.environ['http_proxy'] = args.http_proxy

    if args.proxy_username:
        os.environ['proxy_username'] = args.proxy_username

    if args.proxy_password:
        os.environ['proxy_password'] = args.proxy_password

    try:
        if cmdline_utils.list_args(args):
            raise exceptions.AutosubException(_("\nAll works done."))

        if not args.yes:
            try:
                input_m = raw_input
            except NameError:
                input_m = input
        else:
            input_m = None

        styles_list = []
        validate_result = cmdline_utils.validate_io(args, styles_list)

        if validate_result == 0:
            ffmpeg_cmd = ffmpeg_utils.get_cmd("ffmpeg")
            if not ffmpeg_cmd:
                raise exceptions.AutosubException(
                    _("Error: Dependency ffmpeg"
                      " not found on this machine."))

            ffmpeg_cmd = ffmpeg_cmd + ' '

            if args.audio_process:
                args.audio_process = {k.lower() for k in args.audio_process}
                args.audio_process = \
                    args.audio_process & constants.DEFAULT_AUDIO_PRCS_MODE_SET
                if not args.audio_process:
                    raise exceptions.AutosubException(
                        _("Error: The args of \"-ap\"/\"--audio-process\" are wrong."
                          "\nNo works done."))
                if 'o' in args.audio_process:
                    args.keep = True
                    prcs_file = ffmpeg_utils.audio_pre_prcs(
                        filename=args.input,
                        is_keep=args.keep,
                        cmds=args.audio_process_cmd,
                        output_name=args.output,
                        input_m=input_m,
                        ffmpeg_cmd=ffmpeg_cmd)
                    if not prcs_file:
                        raise exceptions.AutosubException(_("No works done."))
                    else:
                        args.input = prcs_file
                        raise exceptions.AutosubException(
                            _("Audio pre-processing complete.\nAll works done."
                              ))

                if 's' in args.audio_process:
                    args.keep = True

                if 'y' in args.audio_process:
                    prcs_file = ffmpeg_utils.audio_pre_prcs(
                        filename=args.input,
                        is_keep=args.keep,
                        cmds=args.audio_process_cmd,
                        output_name=args.output,
                        input_m=input_m,
                        ffmpeg_cmd=ffmpeg_cmd)
                    if not prcs_file:
                        no_audio_prcs = False
                    else:
                        args.input = prcs_file
                        print(_("Audio pre-processing complete."))
                        no_audio_prcs = True
                elif 'n' in args.audio_process:
                    print(
                        _("No extra check/conversion "
                          "before the speech-to-text procedure."))
                    no_audio_prcs = True
                else:
                    no_audio_prcs = False

            else:
                no_audio_prcs = False

            cmdline_utils.validate_aovp_args(args)
            cmdline_utils.fix_args(args, ffmpeg_cmd=ffmpeg_cmd)
            fps = cmdline_utils.get_fps(args=args, input_m=input_m)
            cmdline_utils.audio_or_video_prcs(args,
                                              fps=fps,
                                              input_m=input_m,
                                              styles_list=styles_list,
                                              no_audio_prcs=no_audio_prcs)

        elif validate_result == 1:
            cmdline_utils.validate_sp_args(args)
            fps = cmdline_utils.get_fps(args=args, input_m=input_m)
            cmdline_utils.subs_trans(args,
                                     input_m=input_m,
                                     fps=fps,
                                     styles_list=None)

    except KeyboardInterrupt:
        print(_("\nKeyboardInterrupt. Works stopped."))
        return 1
    except pysubs2.exceptions.Pysubs2Error:
        print(_("\nError: pysubs2.exceptions. Check your file format."))
        return 1
    except exceptions.AutosubException as err_msg:
        print(err_msg)
        return 0

    print(_("\nAll works done."))
    return 0