from bs4 import BeautifulSoup

import argparse
import urllib2


EITB_MUSIKA_URL = 'http://www.eitb.eus/es/modulo/radio/eitbmusika_2col_ajax/?station=1&date={0}&hour={1}'

EITB_EUSKAL_MUSIKA_URL = 'http://www.eitb.eus/es/modulo/radio/euskalkantak_2col_ajax/?station=1&date={0}&hour={1}'

RUPER = u'RUPER'

IRRATIAK = [
    {'title': 'EITB Musika', 'url': EITB_MUSIKA_URL},
    {'title': 'EITB Euskal Kantak', 'url': EITB_EUSKAL_MUSIKA_URL},
]


def detektorea(eguna):
    """ Detektatu Ruper! """
    ruperren_kantak = []
    for int_ordua in range(24):
        ordua = '{0:02}'.format(int_ordua)
        for irratia in IRRATIAK:
            irratia_url = irratia['url']
            irratia_title = irratia['title']

            url = irratia_url.format(eguna, ordua)
            sock = urllib2.urlopen(url)
            soup = BeautifulSoup(sock.read())
            sock.close()
            for kanta in soup.find_all('tr'):
                zutabeak = kanta.find_all('td')
                if len(zutabeak) == 3:
                    if RUPER in zutabeak[1].text:
                        ruperren_kantak.append(dict(
                            ordua=zutabeak[0].text,
                            artista=zutabeak[1].text,
                            kanta=zutabeak[2].text,
                            irratia=irratia_title,
                            ))

    return ruperren_kantak


def inprimatu(eguna):
    print 'Ruper detektatzen...'
    ruperren_kantak = detektorea(eguna)
    print eguna
    if len(ruperren_kantak) == 1:
        print 'Gaur Ruper behin bakarrik entzungo dugu. Apuntatu agendan!'
    elif len(ruperren_kantak) == 0:
        print 'Ohhh! Gaur ez dute Ruper jarriko!!!'
    else:
        print 'Ondo!!! Gaur Ruper {0} aldiz entzungo dugu!! Hauek dira orduak:'.format(len(ruperren_kantak))

    for kanta in ruperren_kantak:
        print kanta['irratia'], kanta['ordua'], kanta['kanta']


def main():
    parser = argparse.ArgumentParser(
        description='EITB Irratiko Ruper detektorea')

    parser.add_argument('eguna',
                        type=str,
                        help='Idatzi eguna honako formatu honetan: UUUUHHEE. Adibidez 20131107',
        )

    arguments = parser.parse_args()

    inprimatu(arguments.eguna)
