Esempio n. 1
0
def std_srt_to_text_line(url):
    """ Тотлько для субтитров. """
    sets = dal.get_utf8_template()
    sets['name'] = url
        
    readed_lst, err = dal.efile2list(sets)
    purged_lst = list()
    if readed_lst:
        for at in readed_lst:
            at_copy = at.replace('\r','')
            at_copy = at_copy.replace('\n','')
            if at_copy:
                if not '-->' in at_copy:
                    if not is_content_nums(at_copy):
                        at_copy = at_copy.replace('<i>','')
                        at_copy = at_copy.replace('</i>','')
                        
                        # Добавление
                        purged_lst.append(at_copy)
    
    # Теперь нужно разить на предложения
    one_line = '@@@@'.join(purged_lst)
    
    # Filtration
    one_line = one_line.replace(']', '.').replace('[','')
    one_line = one_line.replace('♪', '')
    
    # TODO(zaqwes): rm links
    one_line = re.sub('\~.*?\~', ' ', one_line)
    one_line = re.sub('\<.*?\</.*?\>', ' ', one_line)
    
    one_line = '\n'.join(one_line.split('@@@@'))
    
    return one_line
Esempio n. 2
0
def parser_target_for_spider(target_fname):
    """ 
    
    Thinks:
        А что если файл пустой?
        
    TODO:
        Сделать кастомизацию преобразоватлелей в текст
    """
    sets = dal.get_utf8_template()
    sets['name'] = target_fname
    list_lines, err = dal.efile2list(sets)
    if err[0]:
        rpt = err[1]
        yield None, 1, rpt
        return
   
    # Можно обрабатывать
    list_without_comments = map(
            lambda line: remove_forward_and_back_spaces(line.split('#')[0]), 
            list_lines)
    
    # Удаление пустых строк
    result_job_list = []
    map(lambda line: result_job_list.append(line) if line \
        else None, list_without_comments)

    # В первой информационной строке должно быть имя узла
    if not is_node(result_job_list[0]):
        rpt = 'target_fname: '+target_fname+ \
                '. Неверный формат файла - первое имя узла должно быть до адресов.'+ \
                'Либо файл с заданиями пуст.'
        code_err = 2
        yield None, code_err, rpt
        return
    
    current_node = get_node_name(result_job_list[0])
    i = 0
    nodes = []
    for at in result_job_list:
        if is_node(at):
            current_node = get_node_name(at)
            if current_node not in nodes:
                nodes.append(current_node)
            else:
                code_err = 2
                yield None, code_err, 'Name node: ['+current_node+ \
                        ']\n'+"\tError: Node name need be unic."
            i = 0
        else:
            i += 1
            # Выделяем обработчик
            pos_first_settings_item = at.find('[')          
            if pos_first_settings_item != -1:
                url =  remove_forward_and_back_spaces(
                        at[:pos_first_settings_item])
                params = at[pos_first_settings_item:]
                params, code_err, rpt = _parse_target_params(params)
                if code_err != 0 and rpt:
                    rpt = 'Name node: ['+current_node+']\nUrl: ['+url+']\n'+rpt
                yield (current_node, url, i, params), 0, rpt
            else:
                url =  remove_forward_and_back_spaces(at)
                rpt = None
                yield (current_node, url, i, '{}'), 0, rpt