Exemplo n.º 1
0
def get_schedule(channel, tz):
    if channel != 'Ностальгия':
        return []

    sched = schedule.Schedule(tz, _source_tz)

    today = dateutil.tv_date_now(_source_tz)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)
    rex = re.compile('([0-9]+\+ )?([^\.«»]*(?:«.+»)?[^\.«»]*\.?)(.*)')

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        resp = requests.get(_URL, {'day': d.strftime('%Y-%m-%d')})
        doc = lxml.etree.fromstring(resp.content, _parser)
        table = doc[1][2][0][0][11][6]
        for row in table:
            sched.set_time(row[0][0][0].text)
            m = rex.match(row[1].text)
            age, title, descr = m.groups()
            sched.set_title(title)
            sched.set_descr((age or '') + descr)
        d += _daydelta
    return sched.pop()
Exemplo n.º 2
0
def get_schedule(channel, tz):
    ch_code = channel_code.get(channel)
    if ch_code is None:
        return []

    url = 'schedule_channel_' + ch_code + '_week.html'

    sched = schedule.Schedule(tz, _source_tz)
    event_info = _EventInfo()
    doc = _fetch(url)
    for div in main(doc)[6:]:
        if div.get('class') == 'sometitle':
            date = dateutil.parse_date(div[0][0][0].text, '%A, %d %B')
            sched.set_date(date)
        else:
            for subd in div:
                subd_class = subd.get('class')
                if subd_class == 'time':
                    now = datetime.datetime.now(tz)
                    elapsed = now - sched.set_time(subd.text)
                elif subd_class == 'prname2':
                    a = subd.find('a')
                    if a is None:
                        title = (subd.text
                                 if len(subd) == 0 else subd[-1].tail[1:])
                        sched.set_title(title)
                    else:
                        title, foreign_title, descr = (event_info.get(
                            a, elapsed > _elapsed_limit))
                        sched.set_title(title)
                        if foreign_title:
                            sched.set_foreign_title()
                        if descr:
                            sched.set_descr(descr)
    return sched.pop()
Exemplo n.º 3
0
def get_schedule(channel, tz):
    if channel != 'НТВ':
        return []

    today = dateutil.tv_date_now(_source_tz)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)

    descriptions = _Descriptions()

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        tbs = _fetch(_SCHED_URL, {'d': d.strftime('%Y%m%d')})
        for dt in tbs[1][::2]:
            dd = dt.getnext()
            if len(dt) > 0:
                dt = dt[0]
            if dd[0].tag == 's':
                dd = dd[0]
            sched.set_time(dt.text)
            a = dd[0]
            sched.set_title(a.text)
            sched.set_descr(descriptions.get(a))
        d += _daydelta
    return sched.pop()
Exemplo n.º 4
0
def get_schedule(channel, tz):
    if channel != 'Авто плюс':
        return []

    sched = schedule.Schedule(tz, _source_tz)
    descriptions = _Descriptions()

    for tab in _fetch(_URL)[0][2][4:-1]:
        d = datetime.datetime.strptime(tab.get('data-day'), 'tv_%Y%m%d').date()
        sched.set_date(d)
        for period in tab[0]:
            for event in period[1:]:
                sched.set_time(event[0][0].text)
                dd = event[1]
                it = dd.iterdescendants()
                next(it)
                a = next(it)
                if a.tag == 'a':
                    sched.set_title(a.text)
                    sched.set_descr(descriptions.get(a))
                else:
                    sched.set_title(next(it).text)
                    sched.set_descr(next(it).text)

    return sched.pop()
Exemplo n.º 5
0
def get_schedule(channel, tz):
    if channel != 'Ля-минор':
        return []

    descriptions = _Descriptions()
    sched = schedule.Schedule(tz, _source_tz)

    for tab in _fetch(_URL)[0][1][4:11]:
        dt = datetime.datetime.strptime(tab.get('data-day'), 'tv_%Y%m%d')
        sched.set_date(dt.date())
        for event in tab[0]:
            it = event.iterchildren()
            sched.set_time(next(it).text)
            span = next(it)
            if len(span) < 2:
                title = span.text.lstrip()
                descr = span[0].text
            else:
                a = next(span.iterchildren('a'))
                title = (a.text or span[2].text
                         if span[1].tag != 'span' else span[1][1].text)
                descr = descriptions.get(a)
            sched.set_title(title)
            sched.set_descr(descr)
    return sched.pop()
Exemplo n.º 6
0
def get_schedule(channel, tz):
    if channel != 'Интер':
        return []

    today = dateutil.tv_date_now(_source_tz)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)
    descriptions = _Descriptions()

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        dl = _fetch(d.strftime(_SCHED_URL))[1][0][4]
        for dt in (x for x in dl[1:] if x.tag == 'dt'):
            sched.set_time(dt.text)
            dd = dt.getnext()
            if len(dd) == 0:
                sched.set_title(dd.text)
            else:
                a = dd[-1]
                if a.tag == 'a':
                    sched.set_title(a.text)
                    sched.set_descr(descriptions.get(a))
                else:
                    sched.set_title(a.tail)
        d += _daydelta
    return sched.pop()
Exemplo n.º 7
0
def get_schedule(channel, tz):
    if channel != 'Карусель':
        return []

    today = dateutil.tv_date_now(_source_tz)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)
    descriptions = _Descriptions()

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        url = d.strftime(_SCHED_URL)
        grid = _fetch(url)[0][0][1][6]
        for li in (x for x in grid[1:] if len(x) > 0):
            span = li[0][0][0][0]
            sched.set_time(span.text)
            a = span.getnext()
            if a.tag != 'a':
                sched.set_title(a.text)
                sched.set_descr(a.getnext().text)
            elif len(a) < 2:
                sched.set_title(a[-1].text)
            else:
                sched.set_title(a[-2].text)
                descr = (a[-1].text or '') + '\n' + descriptions.get(a)
                sched.set_descr(descr)
        d += _daydelta
    return sched.pop()
Exemplo n.º 8
0
def get_schedule(channel, tz):
    if channel != 'Русский иллюзион':
        return []

    descriptions = _Descriptions()

    today = dateutil.tv_date_now(_source_tz)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)

    url = urllib.parse.urljoin(_URL, _SCHED_URL)

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        data = {'d': d.strftime("%Y%m%d")}
        resp = requests.post(url, data)
        doc = lxml.etree.fromstring(resp.content, _parser)
        for row in doc[0][1]:
            sched.set_time(row[0].text)
            sched.set_title(row[1][0].text)
            descr = descriptions.get(row[2][0][0][0][0])
            sched.set_descr(descr)
        d += _daydelta
    return sched.pop()
Exemplo n.º 9
0
def get_schedule(channel, tz):
    if channel != 'Шансон ТВ':
        return []

    sched = schedule.Schedule(tz, _source_tz)

    tree = lxml.etree.parse(_URL, _parser)
    doc = tree.getroot()
    table = doc[1][0][0][0][0][3]

    for tr in table[1:3]:
        for day in tr[_SAT][::3]:
            date_str = _nominative_month(day[0].text)
            dt = datetime.datetime.strptime(date_str, _FORMAT)
            sched.set_date(dt.date())
            for row in day.getnext():
                it = row.iterchildren()
                sched.set_time(next(it)[0].text)
                next(it)
                info = next(it)
                title = info.text
                title = title[:-1].rstrip() + title[-1]
                sched.set_title(title)
                if len(info) > 1:
                    descr = info[1].text
                    if descr:
                        sched.set_descr(descr)
    return sched.pop()
Exemplo n.º 10
0
def get_schedule(channel, tz):
    if channel != '365 дней ТВ':
        return []

    sched = schedule.Schedule(tz, _source_tz)
    descriptions = _Descriptions()

    for tab in _fetch(_URL)[4][4:11]:
        dt = datetime.datetime.strptime(tab.get('data-day'), 'tv_%Y%m%d')
        sched.set_date(dt.date())
        for period in tab[0]:
            for event in period[1:]:
                it = event.iterdescendants()
                next(it)
                sched.set_time(next(it).text)
                next(it)
                next(it)
                a = next(it)
                if a.tag == 'a':
                    sched.set_title(a.text)
                    sched.set_descr(descriptions.get(a))
                else:
                    sched.set_title(next(it).text)
                    sched.set_descr(next(it).text)

    return sched.pop()
Exemplo n.º 11
0
def get_schedule(channel, tz):
    if channel != 'Піксель':
        return []

    today = dateutil.tv_date_now(_source_tz)

    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)

    event_info = _EventInfo()

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        url = _URL.format(_weekday[i])
        for li in _fetch(url)[3][0][1:]:
            sched.set_time(li[0].text)
            t = li[1]
            if len(t) == 0:
                title = t.text.strip()
                descr = None
            else:
                title, descr = event_info.get(t[0])
            sched.set_title(title)
            if descr:
                sched.set_descr(descr)
        d += _daydelta
    return sched.pop()
Exemplo n.º 12
0
def get_schedule(channel, tz):
    if channel != 'Universal Channel':
        return []

    today = dateutil.tv_date_now(_source_tz)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)

        url = d.strftime(_URL)
        resp = requests.get(url)
        doc = lxml.etree.fromstring(resp.content, _parser)
        inner = doc[2][7][0][0][2][0][0][0][0][0][1][0]

        for event in (x for x in inner[2:] if len(x) > 1):
            sched.set_time(event[0].text)
            info = event[1]
            title = info[0]
            sched.set_title(title.text or title[0].text)
            descr = ' '.join(info[1].text.split())
            descr = descr + '\n' if descr else ''
            sched.set_descr(descr + info[2][0].text.strip())
        d += _daydelta
    return sched.pop()
Exemplo n.º 13
0
def get_schedule(channel, tz):
    global _URL

    _URL = _url_map.get(channel)
    if _URL is None:
        return []

    today = dateutil.tv_date_now(_source_tz, 5)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)
    descriptions = _Descriptions()

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        chan = _fetch(d.strftime(_PROG_URL))
        ul = chan[2][0][0][0][0][0][1][1]
        for li in (x for x in ul if len(x) > 0):
            div = li[0]
            sched.set_time(div[0].text)
            title = div[1]
            if len(title) == 0:
                sched.set_title(title.text.lstrip())
            else:
                a = title[0]
                sched.set_title(a.text)
                descr = descriptions.get(a)
                sched.set_descr(descr)
        d += _daydelta
    return sched.pop()
Exemplo n.º 14
0
def get_schedule(channel, tz):
    if channel != 'Много ТВ':
        return []

    sched = schedule.Schedule(tz, _source_tz)
    descriptions = _Descriptions()

    teleprog = _fetch(_URL)[0][1][0][1]
    for tab in teleprog[4: 11]:
        dt = datetime.datetime.strptime(tab.get('data-day'), 'tv_%Y%m%d')
        sched.set_date(dt.date())
        for event in tab[0]:
            it = event.iterchildren()
            sched.set_time(next(it).text)
            span = next(it)
            if len(span) < 2:
                title = span.text.lstrip()
                descr = span[0].text
            else:
                a = span[0]
                if span[1].tag == 'span':
                    title = span[1][1].text
                else:
                    title = a.text or span[2].text
                descr = descriptions.get(a)
            sched.set_title(title)
            sched.set_descr(descr)
    return sched.pop()
Exemplo n.º 15
0
def get_schedule(channel, tz):
    if channel != 'Ю':
        return []

    today = dateutil.tv_date_now(_source_tz, 5)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        param = {'date': d.strftime('%Y-%m-%d')}
        resp = requests.get(_URL, param)
        doc = lxml.etree.fromstring(resp.content, _parser)
        wrapper = doc[1][5][0][0][0][13]
        if wrapper.tag != 'div':
            wrapper = wrapper.getnext()
        for event in wrapper[0][0][0][0][1][1]:
            it = event.iterchildren()
            sched.set_time(next(it).text)
            next(it)
            it = next(it).iterdescendants()
            next(it)
            sched.set_title(next(it).text)
            try:
                descr = next(it).text + ' ' + next(it).text
                sched.set_descr(descr)
            except StopIteration:
                pass
        d += _daydelta
    return sched.pop()
Exemplo n.º 16
0
def get_schedule(channel, tz):
    if channel != 'ТВ Центр':
        return []

    today = dateutil.tv_date_now(_source_tz)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)

    descriptions = _Descriptions()

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        for li in _fetch(d.strftime(_SCHED_URL))[0][12]:
            a = li[0]
            t = next(x for x in a.iterchildren('div')
                     if x.get('class') == 'b-schedule__item__title')
            i = a.index(t)
            sched.set_time(a[i + 2].text)
            sched.set_title(t[0].text)
            ds = a[i + 1].text
            descr = (ds + '\n' if ds else '') + (descriptions.get(a) or '')
            if descr:
                sched.set_descr(descr)
        d += _daydelta
    return sched.pop()
Exemplo n.º 17
0
def get_schedule(channel, tz):
    ch_code = channel_code.get(channel)
    if ch_code is None:
        return []

    url = _URL + ch_code + '/'
    today = dateutil.tv_date_now(_source_tz, 0)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)

    d = today
    for i in range(0, 7 - weekday_now):
        sched.set_date(d)
        resp = requests.get(url + str(i) + '/')
        doc = lxml.html.fromstring(resp.content)
        page_channel = doc[1][7][2][0][0][2][0][0][0][0][1][0]
        row = page_channel[0][0][0][1][0][0][2]
        if len(row) > 0:
            for event in (x for x in row[0] if x.get('id') == 'programrow'):
                it = event.iterchildren()
                sched.set_time(next(it).text)
                div = next(it)
                title = next(div.iterchildren('a')).text_content()
                sched.set_title(title.split(' (')[0])
                sched.set_descr(div[0].get('value').split(';;')[1])
        d += _daydelta
    return sched.pop()
Exemplo n.º 18
0
def get_schedule(channel, tz):
    if channel != 'ТВ3':
        return []

    sched = schedule.Schedule(tz, _source_tz)

    today = dateutil.tv_date_now(_source_tz)
    data = {'action': 'get_shedule_list', 'dey': today.strftime('%Y-%m-%d')}

    resp = requests.post(_URL, data)
    days = resp.json()
    for day in days:
        for ev in days[day]:
            dt_str = ev['broadcast_time']
            dt = datetime.datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S')
            sched.set_datetime(dt)
            sched.set_title(ev['long_name'])

            descr = ''
            for name in _fields:
                field = ev[name]
                if field:
                    descr += _fields[name] + field + '\n'
                if descr:
                    sched.set_descr(descr)
    return sched.pop()
Exemplo n.º 19
0
def get_schedule(channel, tz):
    ch_code = channel_code.get(channel)
    if ch_code is None:
        return []

    today = dateutil.tv_date_now(_source_tz, 5)
    weekday_now = today.weekday()

    sched = schedule.Schedule(tz, _source_tz)
    d = today

    for i in range(weekday_now, 7):
        sched.set_date(d)
        param = {'date': d.strftime('%Y-%m-%d')}
        tv_common = _fetch(ch_code + '.html', param)
        if tv_common is None:
            break

        program = tv_common[1]

        for row in program.find('table'):  # tv-channel-full
            sched.set_time(row[0][0].text)
            cell = row[1]
            sched.set_title(cell[0].text)
            descr = cell[1].text
            if descr is not None:
                sched.set_descr(descr)

        d += _daydelta

    return sched.pop()
Exemplo n.º 20
0
def get_schedule(channel, tz):
    ch_code = channel_code.get(channel)
    if ch_code is None:
        return []

    today = dateutil.tv_date_now(tz)
    weekday_now = today.weekday()

    sched = schedule.Schedule(tz, tz)
    event_info = _EventInfo()
    _chan_params['sch:channel'] = ch_code
    d = today
    for i in range(weekday_now, 7):
        _chan_params['sch.date'] = d.strftime('%Y-%m-%d')
        chan_type = _fetch(_URL, _chan_params)['channel_type']
        sch = next(iter((chan_type.values())))[0]['schedule']
        for event in sch:
            fmt = '%Y-%m-%d %H:%M:%S'
            dt = datetime.datetime.strptime(event['start'], fmt)
            sched.set_datetime(dt)
            title, descr = event_info.get(event)
            sched.set_title(title)
            sched.set_descr(descr)
        d += _daydelta
    return sched.pop()
Exemplo n.º 21
0
def get_schedule(channel, tz):
    if channel != 'Совершенно секретно':
        return []

    descriptions = _Descriptions()
    sched = schedule.Schedule(tz, _source_tz)

    tabs = _fetch(_URL)[3]
    for day, tab in zip(tabs[0], tabs[2:]):
        a = day[0]
        date = a.text.strip() + ' ' + a[0].text.strip()
        sched.set_date(dateutil.parse_date(date, '%A %d %B'))
        for tv in itertools.chain(*(x[1:] for x in tab)):
            event = tv[0]
            sched.set_time(event[0].text)
            info = event[1]
            p = info[0]
            title = info[1].text
            descr = p.text.rstrip()
            if title:
                sched.set_title(title.lstrip())
            else:
                sched.set_title(descr)
                descr = ''
            descr += ('\n' + p[0].text.strip() + '\n' +
                      descriptions.get(tv[1]))
            sched.set_descr(descr)
    return sched.pop()
Exemplo n.º 22
0
def get_schedule(channel, tz):
    if channel != 'Перший Національний / Ера':
        return []

    today = dateutil.tv_date_now(_source_tz)
    weekday_now = today.isoweekday()
    sched = schedule.Schedule(tz, _source_tz)
    descriptions = _Descriptions()

    d = today
    for i in range(weekday_now, 8):
        sched.set_date(d)
        doc = _fetch(_SCHED_URL.format(i))
        divs = doc[0][0][2][0].iterchildren('div')
        for time in itertools.islice(divs, 0, None, 3):
            sched.set_time(time.text)
            span = next(x for x in time.getnext() if x.get('class') is None)
            if len(span) < 1:
                sched.set_title(span.text)
            else:
                a = span[0]
                sched.set_title(a.text)
                descr = descriptions.get(a)
                if descr:
                    sched.set_descr(descr)
        d += _daydelta
    return sched.pop()
Exemplo n.º 23
0
def get_schedule(channel, tz):
    chan = _channels.get(channel)
    if chan is None:
        return []

    descriptions = _Descriptions()

    params = {'channel': chan, 'type': 'week'}
    today = dateutil.tv_date_now(_source_tz)

    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        params['year'], params['week'], params['dayOfWeek'] = d.isocalendar()
        list = _fetch(_sched_url, params)['list']
        doc = lxml.etree.fromstring(list, _parser)
        for li in doc[0][0][0]:
            sched.set_time(li[0].text)
            a = li[1]
            sched.set_title(a.text)
            sched.set_descr(descriptions.get(a))
        d += _daydelta
    return sched.pop()
Exemplo n.º 24
0
def get_schedule(channel, tz):
    if channel != '2x2':
        return []

    sched = schedule.Schedule(tz, _source_tz)
    event_info = _EventInfo()

    body = _fetch(_SCHED_URL)
    tab_list = body[1][0]
    days = (x[0] for x in tab_list)
    tabs = (x[0] for x in tab_list.getnext().getnext())

    for day, tab in zip(days, tabs):
        d = dateutil.parse_date(day[-2].text + day[-1].text, '%a%d %B')
        sched.set_date(d)
        for row in tab:
            it = row.iterchildren()
            time = next(it)[0][0].text
            title, descr = event_info.get(row)
            if title is None:
                next(it)
                title = next(it)[0].text
            if title is not None:
                sched.set_time(time)
                sched.set_title(title)
                sched.set_descr(descr)
    return sched.pop()
Exemplo n.º 25
0
def get_schedule(channel, tz):
    if channel != 'Бокс ТВ':
        return []

    today = dateutil.tv_date_now(_source_tz, 0)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        url = d.strftime(_URL)
        resp = requests.get(url)
        doc = lxml.etree.fromstring(resp.content, _parser)
        rasp = doc[1][1][2][0][4]
        for event in rasp:
            it = event.iterchildren()
            time = next(it)[0].text
            sched.set_time(time)
            it = next(it)[0].iterchildren()
            title = next(it).text
            sched.set_title(title)
            descr = next(it).text
            sched.set_descr(descr)
        d += _daydelta
    return sched.pop()
Exemplo n.º 26
0
def get_schedule(channel, tz):
    if channel != 'Disney Channel':
        return []

    today = dateutil.tv_date_now(_source_tz)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        param = {'date': d.strftime('%d-%m-%Y')}
        sch = requests.get(_URL, param).json()
        programs = sch['programs']
        for event in sch['seances']:
            sched.set_time(event['time'])
            try:
                program = programs[str(event['programId'])]
            except KeyError:
                sched.set_title(event['title'])
            else:
                sched.set_title(program['title'])
                descr = lxml.html.fromstring(program['description'])
                sched.set_descr(descr.text_content())
        d += _daydelta
    return sched.pop()
Exemplo n.º 27
0
def get_schedule(channel, tz):
    if channel != '1+1':
        return []
    descriptions = _Descriptions()

    sched = schedule.Schedule(tz, _source_tz)

    today = dateutil.tv_date_now(_source_tz)
    weekday_now = today.weekday()

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        for li in _fetch(d.strftime(_SCHED_URL))[0][3]:
            short = li[0]
            sched.set_time(short[0].text)
            title = short[1]
            if len(title) == 0:
                sched.set_title(title.text)
            else:
                a = title[0]
                sched.set_title(a.text)
                descr = descriptions.get(a) or li[1][1][0].tail
                sched.set_descr(descr)

        d += _daydelta
    return sched.pop()
Exemplo n.º 28
0
def get_schedule(channel, tz):
    if channel != 'Bloomberg TV':
        return []

    sched = schedule.Schedule(tz, _source_tz)

    tree = lxml.etree.parse(_URL, _parser)
    doc = tree.getroot()
    container = next(doc[1].iterchildren('div'))
    for tab in container[6][0][0][3:]:
        it = tab.iterchildren()
        date = _to_month_number(next(it).text)
        d = datetime.datetime.strptime(date, '%m %d, %Y')
        sched.set_date(d)
        try:
            row = next(it)
        except StopIteration:
            pass
        else:
            for row in row[0][1:]:
                it = row.iterdescendants()
                sched.set_time(next(it).text)
                next(it)
                sched.set_title(next(it).text.strip())
                sched.set_descr(next(it).text.strip())
    return sched.pop()
Exemplo n.º 29
0
def get_schedule(channel, tz):
    if channel != 'ЖИВИ!':
        return []

    sched = schedule.Schedule(tz, _source_tz)

    tree = lxml.etree.parse(_URL, _parser)
    doc = tree.getroot()
    tabs = doc[2][32][0][0][6][3]
    for tab in tabs:
        for event in (x for x in tab if len(x) > 0):
            name = event[1]
            dt = datetime.datetime.utcfromtimestamp(int(name.get('data-time')))
            sched.set_datetime(dt)
            it = name.iterchildren(reversed=True)
            descr = next(it).text
            try:
                title = next(it).text
            except StopIteration:
                sched.set_title(descr)
            else:
                sched.set_title(title)
                sched.set_descr(descr)

    return sched.pop()
Exemplo n.º 30
0
def get_schedule(channel, tz):
    if channel != 'Пятый канал':
        return []

    today = dateutil.tv_date_now(_source_tz)
    weekday_now = today.weekday()
    sched = schedule.Schedule(tz, _source_tz)
    descriptions = _Descriptions()

    d = today
    for i in range(weekday_now, 7):
        sched.set_date(d)
        param = {'date': d.strftime('%Y-%m-%d')}
        for li in _fetch(_URL, param)[3][0]:
            sched.set_time(li[0].text)
            a = li[1]
            if a.tag == 'a':
                sched.set_title(a.text)
                descr = descriptions.get(a)
                if descr:
                    sched.set_descr(descr)
            elif len(a) == 0:
                sched.set_title(a.text)
            else:
                sched.set_title(a[0].text)
        d += _daydelta
    return sched.pop()