def search_movie_subtitle(movie, language): """find subtitle for a movie base on assigned language if a language has not be assigned 'english' will be supplied by the Movie class Args: movie (Movie): The movie whose subtitle is to be searched. language (str): The subtitle language. """ url = 'https://subscene.com/subtitles/' + movie.slug() + '/' + language response = requests.get(url) response.raise_for_status() soup = bs4.BeautifulSoup(response.text, "html.parser") del response subtitles = [] selection = soup.findAll('td', attrs={'class': 'a1'}) for td in selection: title = str(td.findAll( 'span', attrs={'class': None})[0].contents[0]).encode('utf-8').strip() url = str(td.find('a')['href']).strip() lang = str(td.find('span').contents[0]).encode('utf-8').strip() temp = Subtitle(title, url, lang) subtitles.append(temp) return subtitles
def setupMediaExtractor(self, i): movie_name = self.clients[i]['movie_name'] self.clients[i]['video_extractor'] = VideoCapturer(movie_name) video_extractor = self.clients[i]['video_extractor'] fps = video_extractor.fps frame_count = video_extractor.frame_count self.clients[i]['audio_extractor'] = AudioCapturer( movie_name, fps, frame_count) if self.clients[i]['subtitle_file'] is not None: self.clients[i]['subtitle'] = Subtitle( frame_count, fps, self.clients[i]['subtitle_file'])
def load_subtitle(path, aqt_file): print "Loading %s%s" % (path, aqt_file) subtitles = [] with open('%s%s' % (path, aqt_file), 'r') as f: while True: lines = read_next_lines(f, 4) if lines: sub = Subtitle(lines[1], lines[0], lines[2]) subtitles.append(sub) else: break return subtitles
def get_subtitles(file_rows: list) -> list: result = [] timeline_raw = '' subtitle_raw = '' for i, file_row in enumerate(file_rows): if Subtitle.is_timeline(file_row): timeline_raw = file_row if Subtitle.is_subtitle_string(file_row): subtitle_raw = file_row if timeline_raw != '' and subtitle_raw != '': result.append(Subtitle(SubtitleString(subtitle_raw), TimeLine(timeline_raw))) timeline_raw = '' subtitle_raw = '' return result
def main(in_subt, out_subt): assert in_subt != "" assert out_subt != "" parser = Parser() normalizer = Normalizer() lemma_filter = Filter() try: f = codecs.open(in_subt, 'r', encoding='utf8') text = f.read() f.close() except IOError: sys.exit("The subtitle could not be found in the path you provided.") parser.parse(text) normalizer.normalize(parser.get_text()) lemma_filter.clean_lemmas(normalizer.get_lemmas()) new_sub = Subtitle(parser.get_indexes(), parser.get_times(), parser.get_text(), lemma_filter.get_final_lemmas(), lemma_filter.get_dict(), out_subt) new_sub.create_subtitle()
def parse(self, content): subtitles = [] number = None start_time = None end_time = None text = "" self.i = 0 ch = content[self.i] token_count = len(self.analyser.tokens) while self.i < len(content): move_cursor = self.analyser.read_char(ch) # 检查是否有新的token被读到了 if len(self.analyser.tokens) > token_count: token_count += 1 new_token = self.analyser.tokens[-1] assert isinstance(new_token, SrtToken) # 根据当前state分析 if self.state == SrtParser.start_state: # 期待输入为标号类型 if new_token.type != SrtToken.TYPE_COUNTER: print("ERROR, TYPE COUNTER NEEDED BUT", new_token.type, "FOUND") return print("COUNTER", new_token.value) number = int(new_token.value) # 跳转到标号态 self.state = SrtParser.counter_state elif self.state == SrtParser.counter_state: if new_token.type != SrtToken.TYPE_TIMESTAMP: print("ERROR, TYPE TIMESTAMP NEEDED BUT", new_token.type, "FOUND") return print("START TIME", new_token.value) start_time = new_token.value # 跳转到开始时间态 self.state = SrtParser.start_time_state elif self.state == SrtParser.start_time_state: if new_token.type != SrtToken.TYPE_TIME_ARROW: print("ERROR, TYPE ARROW NEEDED BUT", new_token.type, "FOUND") return print(new_token.value) # 跳转到 --> 态 self.state = SrtParser.arrow_state elif self.state == SrtParser.arrow_state: if new_token.type != SrtToken.TYPE_TIMESTAMP: print("ERROR, TYPE TIMESTAMP NEEDED BUT", new_token.type, "FOUND") return print("END TIME", new_token.value) end_time = new_token.value # 结束时间态 self.state = SrtParser.end_time_state elif self.state == SrtParser.end_time_state or self.state == SrtParser.text_state: # 接受任意非换行符字符串(即空行) # print("TYPE:", new_token.type, [new_token.value]) if new_token.value != "\n": # 进入字幕态 self.state = SrtParser.text_state print("TEXT:", new_token.value) if not new_token.value.endswith("\n"): new_token.value += "\n" text += new_token.value else: # 跳到起始态 self.state = SrtParser.start_state print("------- END OF A BLOCK OF SUBTITLE -------") # 生成新的subtitle对象 subtitle = Subtitle(number, start_time, end_time, text) subtitles.append(subtitle) # 清空数据 number = None start_time = end_time = None text = "" if move_cursor: self.i += 1 if self.i < len(content): ch = content[self.i] else: break print("Tokens:") for token in self.analyser.tokens: print(token) return subtitles
def subtitles(self) -> List[Path]: try: return [Subtitle(subtitle) for subtitle in self.subtitles_path.iterdir()] except FileNotFoundError: return []
from turtle_graphics import TextMarker screen = turtle.Screen() width, height = screen.window_width(), screen.window_height() canvas = screen.getcanvas() left, top = 100, 100 geom = '{}x{}+{}+{}'.format(width, height, left, top) canvas.master.geometry(geom) screen.title("U.S. States Game | 0/50 ") image = "blank_states_img.gif" screen.addshape(image) turtle.shape(image) subtitle = Subtitle() states = States() states.new_game_memory() game_is_on = True while game_is_on: screen.update() sleep(0.1) # ADD TEXT TO SCREEN score = states.last_score() answer = screen.textinput(title=f"Guess a State | {score}/50 ", prompt=" What's another state's name?\n") # BREAK OUT ON EXIT if answer.title() == "Exit": states.states_to_learn()
'-p', dest='path_folder', type=str, required=True, help='Path folder to find .str files') self.parser.add_argument('--overwrite_file', '--o', '-o', dest='overwrite_file', type=str, required=True, help='Overwrite the file') self.args = self.parser.parse_args() def get_params(self): return self.args if __name__ == '__main__': Credits() params = Parameters().get_params() files = HandleFiles(params.path_folder, ".srt").find_files() for file in files: print(f'File: "{file}"') sub = Subtitle(file) try: print(params.overwrite_file) sub.run(params.overwrite_file) except: pass