Пример #1
0
def parse_infantil_data(filename, orrialdea, kategoria):
    df = read_pdf(filename, pages=orrialdea, stream=True)
    cols = read_columns(df[0])
    df[0].columns = cols
    sailkapena = df[0][df[0][cols[0]].notna()].iloc[1:]
    talde_emaitzak = []

    for i, r in sailkapena.iterrows():
        (posizioa, _, tanda) = r['Puesto Tanda'].partition('o')
        (kalea, _, taldea) = r['Baliza Club'].partition(' ')
        ziab1 = None
        if 'Ciaboga 1' in cols:
            ziab1 = r['Ciaboga 1']
        if 'Ciaboga 1 Final' in cols:
            (ziab1, _, denbora) = r['Ciaboga 1 Final'].partition(' ')
        if 'Final' in cols:
            denbora = r['Final']
        emaitza = {
            'tanda': int(tanda),
            'tanda_postua': int(posizioa),
            'kalea': int(kalea),
            'posizioa': int(posizioa),
            'kategoria': kategoria,
            'denbora': denbora,
            'puntuazioa': len(sailkapena) - int(posizioa) + 1
        }
        t = TaldeEmaitza(taldea, **emaitza)
        if pd.notna(ziab1):
            t.ziaboga_gehitu(ziab1)
        talde_emaitzak.append(t)
    return talde_emaitzak
Пример #2
0
def parse_df(df):
    e = {
        'izena': 'Gipuzkoako traineru txapelketa',
        'data': '2020-07-15 18:00',
        'lekua': 'Orio'
    }
    estropada = Estropada(**e)
    for i, r in df.iterrows():
        # tanda = int(tanda)
        if not isinstance(r['Postua'], type('str')):
            break
        tanda = 1
        kalea = int(r['Kalea'])
        postua = int(r['Postua'][:-1])
        denbora = r['Denbora']
        taldea = r['TALDEA']
        ziabogak = [r['1, Ziabo']]
        if '2, Ziabo' in df.columns:
            ziabogak.extend([r['2, Ziabo'], r['3, Ziabo']])

        emaitza = {
            'tanda': tanda,
            'tanda_postua': postua,
            'kalea': int(kalea),
            'posizioa': postua,
            'denbora': denbora,
            'puntuazioa': postua,
            'ziabogak': ziabogak
        }
        t = TaldeEmaitza(taldea, **emaitza)
        estropada.taldeak_add(t)
    return estropada
Пример #3
0
 def parse_tandas(self, document):
     numberOfHeats = document.find_class('tabla_tanda')
     for num, heat in enumerate(numberOfHeats):
         results = heat.findall('.//tbody//tr')
         for result in results:
             resultData = [x.text for x in result.findall('.//td')]
             if resultData[1] is not None:
                 teamName = resultData[1].strip()
                 # ziabogak = map(lambda s: s or '', resultData[2:5])
                 ziabogak = [
                     result if result is not None else ''
                     for result in resultData[2:5]
                 ]
                 if resultData[5] is None:
                     denbora = ''
                 else:
                     denbora = resultData[5]
                 teamResult = TaldeEmaitza(talde_izena=teamName,
                                           kalea=int(resultData[0]),
                                           ziabogak=ziabogak,
                                           denbora=denbora,
                                           tanda=num + 1,
                                           tanda_postua=int(resultData[6]),
                                           posizioa=0)
                 self.estropada.taldeak_add(teamResult)
Пример #4
0
 def parse_tandas(self, document, urtea):
     tandas = document.cssselect('table.resultados')
     for num, text in enumerate(tandas):
         rows = text.findall('.//tr')
         for kalea, row in enumerate(rows):
             if kalea == 0:
                 continue
             data = [x.text for x in row.findall('.//td')]
             try:
                 if not data[1] is None:
                     if urtea < 2008:
                         pos = 12
                         aux = re.sub('[^0-9]', '', data[6])
                         try:
                             pos = int(aux)
                         except ValueError:
                             pos = 12
                     else:
                         pos = 0
                     emaitza = TaldeEmaitza(talde_izena=data[1],
                                            kalea=kalea,
                                            ziabogak=data[2:5],
                                            denbora=data[5],
                                            tanda=num + 1,
                                            posizioa=pos,
                                            tanda_postua=4)
                     self.estropada.taldeak_add(emaitza)
             except TypeError as e:
                 print(e)
Пример #5
0
 def parse_tandas(self, document):
     tandas = document.cssselect('table.tanda')
     for num, text in enumerate(tandas):
         rows = text.findall('.//tbody//tr')
         for kalea, row in enumerate(rows):
             data = [x.text for x in row.findall('.//td')]
             taldea = row.find('.//span//a')
             emaitza = TaldeEmaitza(talde_izena=taldea.text.strip(),
                                    kalea=kalea + 1, ziabogak=data[1:4],
                                    denbora=data[4], tanda=num + 1)
             self.estropada.taldeak_add(emaitza)
Пример #6
0
def test_estropada_with_sailkapena_with_team_emaitza_objects():
    izena = 'Test estropada'
    props = {
        'sailkapena': [
            TaldeEmaitza('Hondarribia', **{
                'kalea': 1,
                'tanda': 1
            }),
            TaldeEmaitza('Urdaibai', **{
                'kalea': 2,
                'tanda': 1
            })
        ]
    }
    e = Estropada(izena, **props)
    assert type(e) == Estropada
    assert e.izena == izena
    assert len(e.sailkapena) == 2
    assert type(e.sailkapena[0]) == TaldeEmaitza
    assert e.sailkapena[0].talde_izena == 'Hondarribia'
    assert e.sailkapena[1].talde_izena == 'Urdaibai'
Пример #7
0
def parse_kadete_data(filename, orrialdea, kategoria):
    df = read_pdf(filename, pages=orrialdea, stream=True)
    cols = read_columns(df[0])
    df[0].columns = cols
    sailkapena = df[0][df[0][cols[0]].notna()].iloc[1:]
    talde_emaitzak = []

    for i, r in sailkapena.iterrows():
        (posizioa, _, tanda) = r['Puesto Tanda'].partition('o')
        (kalea, _, taldea) = r['Baliza Club'].partition(' ')
        if 'Ciaboga 1' in cols:
            ziab1 = r['Ciaboga 1']
        if 'Ciaboga 1 Ciaboga 2 Final' in cols:
            denborak = str(r['Ciaboga 1 Ciaboga 2 Final']).split(' ')
            if len(denborak) < 3:
                ziab1 = ''
                ziab2 = ''
                denbora = denborak[0]
            else:
                (ziab1, ziab2, denbora) = denborak
        if 'Ciaboga 2 Final' in cols:
            (ziab2, _, denbora) = str(r['Ciaboga 2 Final']).partition(' ')
        tanda = int(tanda)
        kalea = int(kalea)
        emaitza = {
            'tanda': tanda,
            'tanda_postua': int(posizioa),
            'kalea': int(kalea),
            'posizioa': int(posizioa),
            'kategoria': kategoria,
            'denbora': denbora,
            'puntuazioa': len(sailkapena) - int(posizioa) + 1
        }
        t = TaldeEmaitza(taldea, **emaitza)
        t.ziaboga_gehitu(ziab1)
        t.ziaboga_gehitu(ziab2)
        talde_emaitzak.append(t)
    return talde_emaitzak
Пример #8
0
 def parse_tandas(self, document):
     '''Parse race's paces tables'''
     tandas = document.find_class('tabla_tanda')
     for num, text in enumerate(tandas):
         rows = text.findall('.//tbody//tr')
         for row in rows:
             data = [x.text for x in row.findall('.//td')]
             kalea = int(data[0])
             if data[1]:
                 emaitza = TaldeEmaitza(talde_izena=data[1].strip(),
                                        kalea=kalea, ziabogak=data[2:5],
                                        denbora=data[5], tanda=num + 1,
                                        tanda_postua=int(data[6]), posizioa=0)
             self.estropada.taldeak_add(emaitza)
Пример #9
0
def parse_senior_data(filename, orrialdea, kategoria):
    df = read_pdf(filename, pages=orrialdea, stream=True)
    cols = read_columns(df[0])
    df[0].columns = cols
    sailkapena = df[0].iloc[1::2]
    talde_emaitzak = []

    for i, r in sailkapena.iterrows():
        (posizioa, _, tanda) = r['Puesto Tanda'].partition('o')
        (kalea, _, taldea) = r['Baliza Club'].partition(' ')
        if 'Ciaboga 1' in cols:
            ziab1 = r['Ciaboga 1']
        if 'Ciaboga 2' in cols:
            ziab2 = r['Ciaboga 2']
        if 'Ciaboga 1 Ciaboga 2' in cols:
            (ziab1, _, ziab2) = r['Ciaboga 1 Ciaboga 2'].partition(' ')
        if 'Ciaboga 2 Ciaboga 3' in cols:
            (ziab2, _, ziab3) = r['Ciaboga 2 Ciaboga 3'].partition(' ')
        if 'Ciaboga 3 Final' in cols:
            (ziab3, _, denbora) = str(r['Ciaboga 3 Final']).partition(' ')
        if 'Final' in cols:
            denbora = r['Final']
        tanda = int(tanda)
        kalea = int(kalea)
        emaitza = {
            'tanda': tanda,
            'tanda_postua': int(posizioa),
            'kalea': int(kalea),
            'posizioa': int(posizioa),
            'kategoria': kategoria,
            'denbora': denbora,
            'puntuazioa': len(sailkapena) - int(posizioa) + 1
        }
        t = TaldeEmaitza(taldea, **emaitza)
        t.ziaboga_gehitu(ziab1)
        t.ziaboga_gehitu(ziab2)
        t.ziaboga_gehitu(ziab3)
        talde_emaitzak.append(t)
    return talde_emaitzak
Пример #10
0
def test_talde_emaitza():
    izena = 'Donostiarra'
    te = TaldeEmaitza(izena)
    assert type(te) == TaldeEmaitza
    assert te.talde_izena == izena
Пример #11
0
import pytest
from estropadakparser.estropada.estropada import TaldeEmaitza


def test_talde_emaitza():
    izena = 'Donostiarra'
    te = TaldeEmaitza(izena)
    assert type(te) == TaldeEmaitza
    assert te.talde_izena == izena


@pytest.mark.parametrize("test_input,expected", [
    (TaldeEmaitza('Donostiarra'),
     '{:30}'.format('Donostiarra')),
    (TaldeEmaitza('Donostiarra', **{'tanda': 1, 'kalea': 1}),
     '{:1}{:1}{:30}'.format(1, 1, 'Donostiarra')),
    (TaldeEmaitza('Donostiarra', **{'posizioa': 1, 'tanda': 1, 'kalea': 1}),
     '[{:2}]{:1}{:1}{:30}'.format(1, 1, 1, 'Donostiarra')),
    (TaldeEmaitza('Donostiarra', **{'posizioa': 1, 'tanda': 1, 'kalea': 1, 'ziabogak': ['04:50', '09:50', '14:50']}),
     '[{:2}]{:1}{:1}{:30}{:25}'.format(1, 1, 1, 'Donostiarra', ' '.join(['04:50', '09:50', '14:50']))),
    (TaldeEmaitza('Donostiarra', **{
        'posizioa': 1,
        'tanda': 1,
        'kalea': 1,
        'ziabogak': ['04:50', '09:50', '14:50'],
        'tanda_postua': 1,
        'denbora': '20:00.00'
        }),
     '[{:2}]{:1}{:1}{:1}{:30}{:25}{:8}'.format(1, 1, 1, 1, 'Donostiarra', ' '.join(['04:50', '09:50', '14:50']), '20:00.00')),
])
def test_print_talde_emaitza(test_input, expected):
Пример #12
0
def parse_data(sailkapena):
    # cols = sailkapena.columns
    # read_pdf(filename, pages=orrialdea, stream=True)
    cols = read_columns(sailkapena)
    sailkapena.columns = cols
    # sailkapena = df[0][df[0][cols[0]].notna()].iloc[1:]
    tanda = 0
    kalea = 1
    talde_emaitzak = []
    ziab1 = None
    ziab2 = None
    ziab3 = None

    for i, r in sailkapena.iterrows():
        if not isinstance(r['Puesto Tanda Baliza'], type('str')):
            continue
        if i == 0:
            continue
        if 'Puesto Tanda Baliza Club' in cols:
            (posizioa, _,
             rest) = str(r['Puesto Tanda Baliza Club']).partition('o')
            (tanda, _, rest) = rest.lstrip().partition(' ')
            (kalea, _, taldea) = rest.lstrip().partition(' ')
        if 'Puesto Tanda Baliza' in cols:
            (posizioa, _, rest) = str(r['Puesto Tanda Baliza']).partition('o')
            (tanda, _, kalea) = rest.lstrip().partition(' ')
        if 'Club' in cols:
            taldea = str(r['Club']).strip()
        if 'Puesto Tanda' in cols:
            (posizioa, _, tanda) = r['Puesto Tanda'].partition('o')
        if 'Baliza Club' in cols:
            (kalea, _, taldea) = r['Baliza Club'].partition(' ')
        if 'Ciaboga 1' in cols:
            ziab1 = r['Ciaboga 1']
        if 'Ciaboga 1 Final' in cols:
            (ziab1, _, denbora) = r['Ciaboga 1 Final'].partition(' ')
        if 'Ciaboga 1 Ciaboga 2' in cols:
            (ziab1, _, ziab2) = r['Ciaboga 1 Ciaboga 2'].partition(' ')
        if 'Ciaboga 1 Ciaboga 2 Final' in cols:
            denborak = str(r['Ciaboga 1 Ciaboga 2 Final']).split(' ')
            if len(denborak) < 3:
                ziab1 = ''
                ziab2 = ''
                denbora = denborak[0]
            else:
                (ziab1, ziab2, denbora) = denborak
        if 'Ciaboga 2' in cols:
            ziab2 = r['Ciaboga 2']
        if 'Ciaboga 2 Final' in cols:
            (ziab2, _, denbora) = str(r['Ciaboga 2 Final']).partition(' ')
        if 'Ciaboga 2 Ciaboga 3' in cols:
            (ziab2, _, ziab3) = r['Ciaboga 2 Ciaboga 3'].partition(' ')
        if 'Ciaboga 3 Final' in cols:
            (ziab3, _, denbora) = str(r['Ciaboga 3 Final']).partition(' ')
        if 'Final' in cols:
            denbora = r['Final']
            if pd.isna(denbora) and ziab1:
                (ziab1, _, denbora) = ziab1.partition(' ')
        tanda = int(tanda)
        kalea = int(kalea)
        emaitza = {
            'tanda': tanda,
            'tanda_postua': int(posizioa),
            'kalea': int(kalea),
            'posizioa': int(posizioa),
            'denbora': denbora,
            'puntuazioa': 0
        }
        t = TaldeEmaitza(taldea, **emaitza)
        if ziab1 and pd.notna(ziab1):
            t.ziaboga_gehitu(ziab1)
        if ziab2 and pd.notna(ziab2):
            t.ziaboga_gehitu(ziab2)
        if ziab3 and pd.notna(ziab3):
            t.ziaboga_gehitu(ziab3)
        talde_emaitzak.append(t)
    return talde_emaitzak
Пример #13
0
        kategoria_base = None
        kategoriak_helper = []
        for row in teamreader:
            posizioa = None
            try:
                posizioa = int(row[1])
            except ValueError as e:
                continue
            if posizioa == 1:
                kategoria_base = kategoriak[tanda]
                tanda = tanda + 1
            kategoria = kategoria_base + ' ' + row[3]
            kategoriak_helper.append(kategoria)
            emaitza = {'tanda': tanda,
                       'tanda_postua': posizioa,
                       'kalea': 1,
                       'posizioa': posizioa,
                       'kategoria': kategoria,
                       'denbora': row[8],
                       'puntuazioa': row[10]}
            t = TaldeEmaitza(row[2], **emaitza)
            t.ziaboga_gehitu(row[5])
            estropada.taldeak_add(t)
        estropada.kategoriak = list(set(kategoriak_helper))

    print(estropada.get_json())
    estropada_json = estropada.get_json()
    estropada_obj = json.loads(estropada_json)
    estropada_obj['_rev'] = estropada._rev
    db[estropada.id] = estropada_obj
Пример #14
0
        kategoriak_helper = []
        for row in teamreader:
            print(row)
            # if row[0].startswith('#'):
            #     continue
            posizioa = None
            try:
                tanda = int(row[0])
                tanda_posizioa = int(row[1])
                posizioa = int(row[2])
                kalea = int(row[5])
            except ValueError as e:
                continue
            emaitza = {
                'tanda': tanda,
                'tanda_postua': tanda_posizioa,
                'kalea': kalea,
                'posizioa': posizioa,
                'denbora': row[8],
                'puntuazioa': 0
            }
            t = TaldeEmaitza(row[3], **emaitza)
            t.ziaboga_gehitu(row[6])
            estropada.taldeak_add(t)

    print(estropada.get_json())
    estropada_json = estropada.get_json()
    estropada_obj = json.loads(estropada_json)
    # estropada_obj['_rev'] = estropada._rev
    db[id] = estropada_obj
Пример #15
0
                continue
            kategoria = kategoria_base
            kategoriak_helper.append(kategoria)
            denbora = row[5]
            if kategoria_base == 'SG' and count < 2:
                puntuazioa = 0
            else:
                if posizioa == 1:
                    puntuazioa = row[6]
                else:
                    puntuazioa = row[7]
            emaitza = {
                'tanda': tanda,
                'tanda_postua': posizioa,
                'kalea': kalea,
                'posizioa': posizioa,
                'kategoria': kategoria,
                'denbora': denbora,
                'puntuazioa': int(puntuazioa)
            }
            t = TaldeEmaitza(row[1], **emaitza)
            t.ziaboga_gehitu(row[4])
            # if row[13] != '':
            #     t.ziaboga_gehitu(row[13])
            # if row[15] != '':
            #     t.ziaboga_gehitu(row[15])
            estropada.taldeak_add(t)
        estropada.kategoriak = list(set(kategoriak_helper))

    print(estropada.get_json())
Пример #16
0
def parse_data(orrialdea, kategoria, data):
    sailkapena = pd.read_csv(f'./data/btl/{data}/{kategoria}_{orrialdea}.csv')
    cols = sailkapena.columns
    tanda = 0
    talde_emaitzak = []
    ziab1 = None
    ziab2 = None
    ziab3 = None
    denbora = ''

    for i, r in sailkapena.iterrows():
        if 'Puesto Tanda Baliza Club' in  cols:
            (posizioa, _, rest) =  str(r['Puesto Tanda Baliza Club']).partition('o')
            (tanda, _, rest) =  rest.lstrip().partition(' ')
            (kalea, _, taldea) =  rest.lstrip().partition(' ')
        if 'Puesto Tanda Baliza' in  cols:
            (posizioa, _, rest) =  str(r['Puesto Tanda Baliza']).partition('o')
            (tanda, _, kalea) =  rest.lstrip().partition(' ')
        if 'Club' in cols:
            taldea =  str(r['Club']).strip()
        if 'Puesto Tanda' in cols:
            (posizioa, _, tanda) = r['Puesto Tanda'].partition('o')
        if 'Baliza Club' in cols:
            (kalea, _, taldea) =  r['Baliza Club'].partition(' ')
        if 'Ciaboga 1' in cols:
            ziab1 = r['Ciaboga 1']
        if 'Ciaboga 1 Final' in cols:
            (ziab1, _, denbora) = r['Ciaboga 1 Final'].partition(' ')
        if 'Ciaboga 1 Ciaboga 2' in cols:
            (ziab1, _, ziab2) =  r['Ciaboga 1 Ciaboga 2'].partition(' ')
        if 'Ciaboga 1 Ciaboga 2 Final' in cols:
            denborak =  str(r['Ciaboga 1 Ciaboga 2 Final']).split(' ')
            if len(denborak) < 3:
                ziab1 = ''
                ziab2 = ''
                denbora = denborak[0]
            else:
                (ziab1, ziab2, denbora) = denborak
        if 'Ciaboga 1 Ciaboga 2 Ciaboga 3 Final' in cols:
            denborak =  str(r['Ciaboga 1 Ciaboga 2 Ciaboga 3 Final']).split(' ')
            if len(denborak) < 3:
                ziab1 = ''
                ziab2 = ''
                ziab3 = ''
                denbora = denborak[0]
            else:
                (ziab1, ziab2, ziab3, denbora) = denborak
        if 'Ciaboga 2' in cols:
            ziab2 =  r['Ciaboga 2']
        if 'Ciaboga 2 Final' in cols:
            (ziab2, _, denbora) =  str(r['Ciaboga 2 Final']).partition(' ')
        if 'Ciaboga 2 Ciaboga 3' in cols:
            (ziab2, _, ziab3) =  r['Ciaboga 2 Ciaboga 3'].partition(' ')
        if 'Ciaboga 3 Final' in cols:
            (ziab3, _, denbora) =  str(r['Ciaboga 3 Final']).partition(' ')
        if 'Final' in cols:
            denbora =  r['Final']
            if pd.isna(denbora) and ziab1:
                (ziab1, _, denbora) = ziab1.partition(' ')
        tanda = int(tanda)
        kalea = int(kalea)
        emaitza = {
            'tanda': tanda,
            'tanda_postua': int(posizioa),
            'kalea': int(kalea),
            'posizioa': int(posizioa),
            'kategoria': kategoria,
            'denbora': denbora,
            'puntuazioa': 0
        }
        t = TaldeEmaitza(taldea, **emaitza)
        if ziab1 and pd.notna(ziab1):
            t.ziaboga_gehitu(ziab1)
        if ziab2 and pd.notna(ziab2):
            t.ziaboga_gehitu(ziab2)
        if ziab3 and pd.notna(ziab3):
            t.ziaboga_gehitu(ziab3)
        talde_emaitzak.append(t)
    return talde_emaitzak