Esempio n. 1
0
def execute(args):
    """ Executes SubLime with given arguments. """
    videos = []
    selected_languages = [
        babelfish.Language(selected_lang)
        for selected_lang in args.selected_languages
    ]

    # List of filenames directly given by user
    if args.video_files:
        videos = [
            VideoFactory.make_from_filename(video_filename)
            for video_filename in args.video_files
        ]
    # Or list of filenames by walking through directories
    elif args.directories:
        for movie_dir in args.directories:
            for root, _, files in os.walk(movie_dir):
                for name in files:
                    video_filename = os.path.join(root, name)
                    video = VideoFactory.make_from_filename(video_filename)
                    if video:
                        videos.append(video)

    # Informs user that there is already existing subtitles
    for video in videos:
        for selected_lang in selected_languages:
            if video.has_subtitle(selected_lang):
                video_type = video.__class__.__name__
                video_name = os.path.basename(video.filename)
                if not args.force:
                    LOG.warning(
                        "{} named {} already has a subtitle "
                        "for {} and nothing will happen for it! "
                        "Use option '-f --force' to replace.".format(
                            video_type, video_name, selected_lang.name))
                else:
                    LOG.info(
                        'Replacing {} subtitle for {} named {}.'.format(
                            selected_lang.name, video_type, video_name))
                    video.languages_to_download.append(selected_lang)
            else:
                video.languages_to_download.append(selected_lang)

    # Search subtitles for videos
    for sub_server in SubtitleProvider.get_providers():
        sub_server.connect()
        sub_server.download_subtitles(
            videos, selected_languages,
            args.rename, args.rename_pattern, args.underscore)
        sub_server.disconnect()