def get_schedule(channel, tz): chan = _channels.get(channel) if chan is None: return [] global _url _url = _URL.format(chan) today = dateutil.tv_date_now(_source_tz, 0) 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 event in _fetch(_SCHED_URL, param)[1:]: it = event.iterchildren() next(it) sched.set_time(next(it)[0].text) title = next(it) if len(title) == 0: sched.set_title(title.text.strip()) else: a = title[0] if a.tag != 'a': # now sched.set_title(title[1][0].text_content()) else: sched.set_title(a.text) sched.set_descr(descriptions.get(a)) d += _daydelta return sched.pop()
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()
def get_schedule(channel, tz): ch_code = channel_code.get(channel) if ch_code is None: return [] event_info = _EventInfo() today = dateutil.tv_date_now(_source_tz) weekday_now = today.weekday() sched = schedule.Schedule(tz, _source_tz) params = {'id': ch_code} d = today for i in range(weekday_now, 7): sched.set_date(d) params['day'] = d.strftime('%d.%m.%Y') item = _fetch(_CHAN_URL, params) try: tvguide = next(x for x in item if x.get('id') == 'tvguide') except StopIteration: pass else: for col in range(2): _get_column(tvguide[0], sched, event_info, col) d += _daydelta return sched.pop()
def get_schedule(channel, tz): global _URL _URL, source_tz = _channels.get(channel) or (None, None) if _URL is None: return [] descriptions = _Descriptions() 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) content = _fetch(d.strftime(_PROG_URL)) tvp_day = next(itertools.islice(content.iterchildren('div'), 1, 2)) for li in tvp_day[0][1][0]: try: a = next(li[1].iter('a')) t = li[0] time = t.text if len(t) == 0 else t[0].text sched.set_time(time) sched.set_title(a[0].text.lstrip()) descr = descriptions.get(a) if descr: sched.set_descr(descr) except StopIteration: pass d += _daydelta return sched.pop()
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(_URL))[0][1]: info = li[2] it = info.iterchildren() time = next(it).text sched.set_time(time) name = next(it) if len(name) == 0: sched.set_title(name.text) else: a = name[0] sched.set_title(a.text) zoo = info.getnext()[0][1] descr = descriptions.get(a) if not descr: zoo = info.getnext()[0][1] if len(zoo) > 0: descr = zoo[0].text sched.set_descr(descr) d += _daydelta return sched.pop()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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() d = today for i in range(weekday_now, 7): sched.set_date(d) url = '/87/channels/' + ch_code content = _fetch(url, {'date': d.strftime('%Y-%m-%d')}) if content is not None: items = content[2][0][0][0][0][0][0] if items.get('class') != 'tv-splash': for item in items: a = item[0] sched.set_time(a[0].text) title, descr = event_info.get(a) sched.set_title(title) if descr: sched.set_descr(descr) d += _daydelta return sched.pop()
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()
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()
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()
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()
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()
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()
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()
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()
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()
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) descriptions = _Descriptions() sched_url = _SCHED_URL.format(ch_code) d = today for i in range(weekday_now, 7): sched.set_date(d) url = d.strftime(sched_url) famediv = _fetch(url).get_element_by_id('famediv') table = next(itertools.islice(famediv.itersiblings(), 2, None)) for row in (x[0][0][0] for x in table[1:]): it = row.iterchildren() sched.set_time(next(it).text) a = next(it)[0] sched.set_title(a.text) descr = descriptions.get(a) if descr: sched.set_descr(descr) d += _daydelta return sched.pop()
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) for ev in _fetch(d.strftime(_URL))[1:]: sched.set_time(ev[0].text) sched.set_title(ev[1][0].text) sched.set_descr(ev[3].text) d += _daydelta return sched.pop()
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) d = today for i in range(weekday_now, 7): sched.set_date(d) url = _URL + _weekday[i] + d.strftime('_%d_%m_%y/') r = requests.get(url, verify=False) doc = lxml.etree.fromstring(r.content, parser=_parser) items = doc[1][2][1][0][2][0][1][0][1][0][2] for right in (x[-1] for x in items): it = right.iterchildren() name = next(it) itn = name.iterchildren() sched.set_time(next(itn)[0][0][0].text) sched.set_title(next(itn).text) descr = '' try: next(itn) descr += next(itn).text + '\n' except StopIteration: pass descr += next(it)[0].text try: descr += '\n' + next(it).text_content() except StopIteration: pass sched.set_descr(descr) d += _daydelta return sched.pop()
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) d = today for i in range(weekday_now, 7): sched.set_date(d) resp = requests.get(_URL, {'d': d.strftime('%Y-%m-%d')}) doc = lxml.etree.fromstring(resp.content, _parser) guide = doc[2][2][2][1][0][1][1][0][0] for row in guide[::2]: it = row.iterchildren() sched.set_time(next(it).text) sched.set_title(next(it)[0].text) sched.set_descr(row.getnext()[-1][0].text) d += _daydelta return sched.pop()
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) for row in _fetch(d.strftime(_URL)): sched.set_time(row[0].text) ev = row[1] title = ev.text a = ev[0] if title is None: title = a.text sched.set_title(title) d += _daydelta return sched.pop()