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
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)
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)
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)
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)
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)
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