コード例 #1
0
    def _parse_dictionary(self, dictionary) -> Subtitle:
        subtitle = Subtitle(id=None, quote=None, start_time=None, end_time=None, movie=None)

        if "id" in dictionary:
            subtitle.id = int(dictionary["id"])
        if "quote" in dictionary:
            subtitle.quote = dictionary["quote"]

        return subtitle
コード例 #2
0
    def test_save(self):
        # Arrange
        movie_name = "Black swan"
        year = 2011
        director = "Darren Aronofsky"
        poster_url = "https://blackswan/poster"
        video_url = "https://blackswan/video"
        movie = Movie(title = movie_name, year = year, director = director,
                      poster_url = poster_url, video_url = video_url)

        quote = "I am gonna die"

        subtitle = Subtitle(quote = quote, start_time = datetime.now(),
                            end_time = datetime.now(), movie = movie)
        expected_movie = {'title': movie_name, 'year': year, 'director': director,
                          'poster_url': poster_url, 'video_url': video_url}
        subtitle_repo = SubtitleRepo()

        # Act
        subtitle_repo.save(subtitle)
        subtitle_orm = SubtitleORM.objects.all().filter(quote = quote).first()

        # Assert
        self.assertIsNotNone(subtitle_orm)
        movie_orm = subtitle_orm.movie
        self.assertIsNotNone(movie_orm)
        actual_movie = {'title': movie_orm.title,
                        'year': movie_orm.year, 'director': movie_orm.director,
                        'poster_url': movie_orm.poster_url, 'video_url': movie_orm.video_url}
        self.assertDictEqual(expected_movie, actual_movie)
コード例 #3
0
    def test_parse__lang_en(self):
        # Arrange
        expected_subtitles = [
            Subtitle(start_time=time(hour=0,
                                     minute=0,
                                     second=34,
                                     microsecond=420000),
                     end_time=time(hour=0,
                                   minute=0,
                                   second=37,
                                   microsecond=506000),
                     quote='The world is changed.'),
            Subtitle(start_time=time(hour=0,
                                     minute=0,
                                     second=37,
                                     microsecond=673000),
                     end_time=time(hour=0,
                                   minute=0,
                                   second=40,
                                   microsecond=676000),
                     quote='I feel it in the water.'),
            Subtitle(start_time=time(hour=0,
                                     minute=0,
                                     second=41,
                                     microsecond=427000),
                     end_time=time(hour=0,
                                   minute=0,
                                   second=44,
                                   microsecond=346000),
                     quote='I feel it in the earth.'),
        ]

        # Act
        actual_subtitles = SubtitleParser.parse(
            './apps/movie_quotes/tests/unit/utility/res/The_Lord_of_the_Rings(2001).srt'
        )

        # Assert
        compare(actual_subtitles, expected_subtitles)
コード例 #4
0
    def test_parse__lang_bengal__cleanning_formatting(self):
        expected_subtitles = [
            Subtitle(start_time=time(hour=0,
                                     minute=0,
                                     second=31,
                                     microsecond=250000),
                     end_time=time(hour=0,
                                   minute=0,
                                   second=34,
                                   microsecond=549000),
                     quote='I amar prestar aen.'),
            Subtitle(start_time=time(hour=0,
                                     minute=0,
                                     second=36,
                                     microsecond=650000),
                     end_time=time(hour=0,
                                   minute=0,
                                   second=37,
                                   microsecond=749000),
                     quote='Han mathon ne nen.'),
            Subtitle(start_time=time(hour=0,
                                     minute=0,
                                     second=39,
                                     microsecond=950000),
                     end_time=time(hour=0,
                                   minute=0,
                                   second=41,
                                   microsecond=549000),
                     quote='Han mathon ne chae.'),
        ]

        # Act
        actual_subtitles = SubtitleParser.parse(
            './apps/movie_quotes/tests/unit/utility/res/The_Lord_of_the_Rings(2001).bengal.colored.srt'
        )

        # Assert
        compare(actual_subtitles, expected_subtitles)
コード例 #5
0
    def test_parse__lang_ru(self):
        expected_subtitles = [
            Subtitle(start_time=time(hour=0,
                                     minute=0,
                                     second=32,
                                     microsecond=560000),
                     end_time=time(hour=0,
                                   minute=0,
                                   second=35,
                                   microsecond=470000),
                     quote='Мир изменился.'),
            Subtitle(start_time=time(hour=0,
                                     minute=0,
                                     second=35,
                                     microsecond=640000),
                     end_time=time(hour=0,
                                   minute=0,
                                   second=38,
                                   microsecond=550000),
                     quote='Я чувствую это в воде.'),
            Subtitle(start_time=time(hour=0,
                                     minute=0,
                                     second=39,
                                     microsecond=280000),
                     end_time=time(hour=0,
                                   minute=0,
                                   second=42,
                                   microsecond=80000),
                     quote='Я чувствую это в земле.'),
        ]

        # Act
        actual_subtitles = SubtitleParser.parse(
            './apps/movie_quotes/tests/unit/utility/res/The_Lord_of_the_Rings(2001).ru.srt'
        )

        # Assert
        compare(actual_subtitles, expected_subtitles)
コード例 #6
0
    def test__subtitle_deserialization(self):
        # Arrange
        subtitle_json = f'{{"id": "{self.subtitle_1.id}", "quote": "{self.subtitle_1.quote}"}}'

        expected_subtitle = Subtitle(id=self.subtitle_1.id,
                                     quote=self.subtitle_1.quote,
                                     start_time=None,
                                     end_time=None,
                                     movie=None)

        # Act
        subtitle_serializer = SubtitleSerializer()
        actual_subtitle = subtitle_serializer.deserealize(subtitle_json)

        compare(expected_subtitle, actual_subtitle)
コード例 #7
0
    def parse(filename: str) -> List[Subtitle]:
        encoding = SubtitleParser._detect_encoding(filename)

        raw_subtitles = parser.parse(filename, encoding=encoding)
        raw_subtitles = formatting.clean(raw_subtitles)

        subtitle_entities = []

        for raw_subtitle in raw_subtitles:
            subtitle_entity = Subtitle(quote=raw_subtitle.text,
                                       start_time=raw_subtitle.start,
                                       end_time=raw_subtitle.end)

            subtitle_entities.append(subtitle_entity)

        return subtitle_entities