Skip to content

Instantly share code, notes, and snippets.

@chaliy
Last active August 29, 2015 14:02
Show Gist options
  • Save chaliy/03b20751cd385e40a50d to your computer and use it in GitHub Desktop.
Save chaliy/03b20751cd385e40a50d to your computer and use it in GitHub Desktop.
Parse time table of the Lvivska Politehnica and then convert to iCalendar format
# coding=utf-8
import requests
from bs4 import BeautifulSoup
from icalendar import Calendar, Event
from datetime import date, datetime, time, timedelta
def read_table():
r = requests.get('http://lp.edu.ua/node/42?group=%D0%86%D0%A2%D0%9F-31%D0%B7&semestr=1')
#r.encoding = 'utf-8'
r.encoding = 'cp1251'
return r.content
def parse_days(html):
fixed_html = html
doc = BeautifulSoup(fixed_html)
main = doc.find('table')
days = []
current_date = ""
current_day = []
for tr in main.find_all('tr'):
if len(tr.select('td[class=data]')) == 1:
if len(current_day) > 0:
days += [(current_date, current_day[:])]
current_date = datetime.strptime(tr.select('td[class=data]')[0].string, '%d.%m.%Y')
current_day = []
elif len(tr.select('td')) == 5:
vals = tr.select('td')
current_day += [{
"num": vals[0].string,
"name": vals[1].string + " (" + vals[2].string + ")",
"place": vals[3].string + ' ' + vals[4].string
}]
if len(current_day) > 0:
days += [(current_date, current_day[:])]
return days
def time_from_num(num):
if num == '1':
return time(8, 30)
elif num == '2':
return time(10, 20)
elif num == '3':
return time(12, 10)
elif num == '4':
return time(14, 15)
elif num == '5':
return time(16, 00)
elif num == '6':
return time(17, 40)
elif num == '7':
return time(19, 20)
elif num == '8':
return time(21, 00)
def create_calendar(days):
cal = Calendar()
cal.add('prodid', '-//Mike Chaliy//')
cal.add('version', '2.0')
cal.add('summary', 'Розклад пар')
item_duration = timedelta(hours=1, minutes=35)
for (day, items) in days:
if day > datetime.today() - timedelta(days=2):
for item in items:
item_time = time_from_num(item['num'])
dstart = datetime.combine(day, item_time)
event = Event()
#event['uid'] = '42'
event.add('summary', item['num'] + " " + item['name'])
event.add('location', item['place'])
event.add('dtstart', dstart)
event.add('dtend', dstart + item_duration)
cal.add_component(event)
return cal
html = read_table()
days = parse_days(html)
cal = create_calendar(days)
with open('timetable.ics', 'wb') as f:
f.write(cal.to_ical())
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Mike Chaliy//
SUMMARY:Розклад пар
BEGIN:VEVENT
SUMMARY:5 Теорія прийняття рішень (лекція) (Т
каченко С.П.)
DTSTART;VALUE=DATE-TIME:20150225T160000
DTEND;VALUE=DATE-TIME:20150225T173500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:6 Методи та системи штучного інтелек
ту (лекція) (Стех Ю.В.)
DTSTART;VALUE=DATE-TIME:20150225T174000
DTEND;VALUE=DATE-TIME:20150225T191500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:7 Методи та системи штучного інтелек
ту (лекція) (Стех Ю.В.)
DTSTART;VALUE=DATE-TIME:20150225T192000
DTEND;VALUE=DATE-TIME:20150225T205500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:4 Теорія прийняття рішень (лекція) (Т
каченко С.П.)
DTSTART;VALUE=DATE-TIME:20150226T141500
DTEND;VALUE=DATE-TIME:20150226T155000
LOCATION:III н.к. 225
END:VEVENT
BEGIN:VEVENT
SUMMARY:5 Технології створення програмних п
родуктів (лекція) (МатвійкІв О.М.)
DTSTART;VALUE=DATE-TIME:20150226T160000
DTEND;VALUE=DATE-TIME:20150226T173500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:6 Технології захисту інформації (лек
ція) (Іванців Р.Д.)
DTSTART;VALUE=DATE-TIME:20150226T174000
DTEND;VALUE=DATE-TIME:20150226T191500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:7 Технології захисту інформації (лек
ція) (Іванців Р.Д.)
DTSTART;VALUE=DATE-TIME:20150226T192000
DTEND;VALUE=DATE-TIME:20150226T205500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:4 Автоматизація проектування мікрое
лектронних систем (лекція) (Лобур М.В.)
DTSTART;VALUE=DATE-TIME:20150227T141500
DTEND;VALUE=DATE-TIME:20150227T155000
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:5 Автоматизація проектування мікрое
лектронних систем (лекція) (Лобур М.В.)
DTSTART;VALUE=DATE-TIME:20150227T160000
DTEND;VALUE=DATE-TIME:20150227T173500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:6 Методи і засоби комп'ютерних інфор
маційних технологій (лекція) (Мазур В.В.)
DTSTART;VALUE=DATE-TIME:20150227T174000
DTEND;VALUE=DATE-TIME:20150227T191500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:7 Методи і засоби комп'ютерних інфор
маційних технологій (лекція) (Мазур В.В.)
DTSTART;VALUE=DATE-TIME:20150227T192000
DTEND;VALUE=DATE-TIME:20150227T205500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:1 Геометричне моделювання у констру
юванні інженерних об'єктів та систем (ле
кція) (Маркелов О.Е.)
DTSTART;VALUE=DATE-TIME:20150228T083000
DTEND;VALUE=DATE-TIME:20150228T100500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:2 Геометричне моделювання у констру
юванні інженерних об'єктів та систем (ле
кція) (Маркелов О.Е.)
DTSTART;VALUE=DATE-TIME:20150228T102000
DTEND;VALUE=DATE-TIME:20150228T115500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:3 Методи і засоби комп'ютерних інфор
маційних технологій (лекція) (Мазур В.В.)
DTSTART;VALUE=DATE-TIME:20150228T121000
DTEND;VALUE=DATE-TIME:20150228T134500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:4 Математичне моделювання в САПР (ле
кція) (Теслюк В.М.)
DTSTART;VALUE=DATE-TIME:20150228T141500
DTEND;VALUE=DATE-TIME:20150228T155000
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:5 Математичне моделювання в САПР (ле
кція) (Теслюк В.М.)
DTSTART;VALUE=DATE-TIME:20150228T160000
DTEND;VALUE=DATE-TIME:20150228T173500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:1 Методи та системи штучного інтелек
ту (лекція) (Стех Ю.В.)
DTSTART;VALUE=DATE-TIME:20150307T083000
DTEND;VALUE=DATE-TIME:20150307T100500
LOCATION:IV н.к. 319
END:VEVENT
BEGIN:VEVENT
SUMMARY:2 Методи та системи штучного інтелек
ту (лекція) (Стех Ю.В.)
DTSTART;VALUE=DATE-TIME:20150307T102000
DTEND;VALUE=DATE-TIME:20150307T115500
LOCATION:IV н.к. 319
END:VEVENT
BEGIN:VEVENT
SUMMARY:3 Теорія прийняття рішень (лекція) (Т
каченко С.П.)
DTSTART;VALUE=DATE-TIME:20150307T121000
DTEND;VALUE=DATE-TIME:20150307T134500
LOCATION:IV н.к. 319
END:VEVENT
BEGIN:VEVENT
SUMMARY:4 Теорія прийняття рішень (лекція) (Т
каченко С.П.)
DTSTART;VALUE=DATE-TIME:20150307T141500
DTEND;VALUE=DATE-TIME:20150307T155000
LOCATION:IV н.к. 319
END:VEVENT
BEGIN:VEVENT
SUMMARY:1 Технології захисту інформації (лек
ція) (Іванців Р.Д.)
DTSTART;VALUE=DATE-TIME:20150321T083000
DTEND;VALUE=DATE-TIME:20150321T100500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:2 Технології захисту інформації (лек
ція) (Іванців Р.Д.)
DTSTART;VALUE=DATE-TIME:20150321T102000
DTEND;VALUE=DATE-TIME:20150321T115500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:3 Автоматизація проектування мікрое
лектронних систем (лекція) (Лобур М.В.)
DTSTART;VALUE=DATE-TIME:20150321T121000
DTEND;VALUE=DATE-TIME:20150321T134500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:4 Автоматизація проектування мікрое
лектронних систем (лекція) (Лобур М.В.)
DTSTART;VALUE=DATE-TIME:20150321T141500
DTEND;VALUE=DATE-TIME:20150321T155000
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:1 Методи і засоби комп'ютерних інфор
маційних технологій (лекція) (Мазур В.В.)
DTSTART;VALUE=DATE-TIME:20150404T083000
DTEND;VALUE=DATE-TIME:20150404T100500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:2 Методи і засоби комп'ютерних інфор
маційних технологій (лекція) (Мазур В.В.)
DTSTART;VALUE=DATE-TIME:20150404T102000
DTEND;VALUE=DATE-TIME:20150404T115500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:3 Математичне моделювання в САПР (ле
кція) (Теслюк В.М.)
DTSTART;VALUE=DATE-TIME:20150404T121000
DTEND;VALUE=DATE-TIME:20150404T134500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:4 Математичне моделювання в САПР (ле
кція) (Теслюк В.М.)
DTSTART;VALUE=DATE-TIME:20150404T141500
DTEND;VALUE=DATE-TIME:20150404T155000
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:1 Геометричне моделювання у констру
юванні інженерних об'єктів та систем (ле
кція) (Маркелов О.Е.)
DTSTART;VALUE=DATE-TIME:20150425T083000
DTEND;VALUE=DATE-TIME:20150425T100500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:2 Геометричне моделювання у констру
юванні інженерних об'єктів та систем (ле
кція) (Маркелов О.Е.)
DTSTART;VALUE=DATE-TIME:20150425T102000
DTEND;VALUE=DATE-TIME:20150425T115500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:3 Методи та системи штучного інтелек
ту (лекція) (Стех Ю.В.)
DTSTART;VALUE=DATE-TIME:20150425T121000
DTEND;VALUE=DATE-TIME:20150425T134500
LOCATION:IV н.к. 319
END:VEVENT
BEGIN:VEVENT
SUMMARY:4 Методи та системи штучного інтелек
ту (лекція) (Стех Ю.В.)
DTSTART;VALUE=DATE-TIME:20150425T141500
DTEND;VALUE=DATE-TIME:20150425T155000
LOCATION:IV н.к. 319
END:VEVENT
BEGIN:VEVENT
SUMMARY:1 Теорія прийняття рішень (лекція) (Т
каченко С.П.)
DTSTART;VALUE=DATE-TIME:20150516T083000
DTEND;VALUE=DATE-TIME:20150516T100500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:2 Технології захисту інформації (лек
ція) (Іванців Р.Д.)
DTSTART;VALUE=DATE-TIME:20150516T102000
DTEND;VALUE=DATE-TIME:20150516T115500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:3 Геометричне моделювання у констру
юванні інженерних об'єктів та систем (ле
кція) (Маркелов О.Е.)
DTSTART;VALUE=DATE-TIME:20150516T121000
DTEND;VALUE=DATE-TIME:20150516T134500
LOCATION:IV н.к. 327
END:VEVENT
BEGIN:VEVENT
SUMMARY:4 Математичне моделювання в САПР (ле
кція) (Теслюк В.М.)
DTSTART;VALUE=DATE-TIME:20150516T141500
DTEND;VALUE=DATE-TIME:20150516T155000
LOCATION:IV н.к. 327
END:VEVENT
END:VCALENDAR
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment