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
Ejemplo n.º 2
0
 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'])
Ejemplo n.º 3
0
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
Ejemplo n.º 5
0
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()
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
	def subtitles(self) -> List[Path]:
		try:
			return [Subtitle(subtitle) for subtitle in self.subtitles_path.iterdir()]
		except FileNotFoundError:
			return []
Ejemplo n.º 8
0
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()
Ejemplo n.º 9
0
                                 '-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