Пример #1
0
    def __init__(self):
        """ Initializes instance. """
        SubtitleProvider.__init__(
            self,
            "OpenSubtitles",
            "http://www.opensubtitles.org",
            "os"
        )
        XMLRPCServer.__init__(self, OpenSubtitlesServer.XMLRPC_URI)

        self._status_regexp = re.compile(OpenSubtitlesServer.STATUS_REGEXP)
        self._series_regexp = re.compile(OpenSubtitlesServer.SERIES_REGEXP)
Пример #2
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()
Пример #3
0
 def test_get_providers(self):
     """ Tests getting all Subtitle Providers. """
     all_providers = SubtitleProvider.get_providers()
     open_subtitle_provider = SubtitleProvider(
         "OpenSubtitles", "http://www.opensubtitles.org", "os")
     self.assertIn(open_subtitle_provider, all_providers)