Skip to content
Snippets Groups Projects
Commit 4566ac18 authored by ph's avatar ph
Browse files

Week calendar csv generator

parents
No related branches found
No related tags found
No related merge requests found
cal.py 0 → 100755
#!/usr/bin/python
# -*- coding: utf-8 -*-
import calendar
import datetime
from datetime import date, timedelta, datetime, time
import dateutil.parser
year = 2017
first_day = date(year, 1, 1)
last_day = date(year, 12, 31)
def get_moon(f):
# https://www.calendar-12.com/moon_phases/2017
# writer->calc->cleanup->export csv ";"
with open(f) as csv:
for line in csv:
phase_str, date_str, time_str = line.split(";")
date_str = date_str.split(",", 1)[0]
date = dateutil.parser.parse(date_str)
hour_str, min_str = time_str.split(":")
hour, minute = int(hour_str), int(min_str)
moon_time = time(hour, minute)
timestamp = datetime.combine(date, moon_time)
phase = {"e": "", "i": "", "u": "", "a": ""}[phase_str[1]]
yield timestamp.date(), (phase, timestamp)
def get_holidays(f):
# http://svatky.centrum.cz/svatky/statni-svatky/2017/
# writer->calc->cleanup->export csv ";"
with open(f) as csv:
for line in csv:
date_str, holiday_str = line.split(";")
date = dateutil.parser.parse(date_str, dayfirst=True)
holiday = holiday_str.strip()
yield date.date(), holiday
def get_happydays(f):
with open(f) as csv:
for line in csv:
if line.startswith("exec"):
continue
date_str, holiday_str, cat_str, name_str = line.split(":")
date_str, holiday_str, cat_str, name_str = date_str.strip(), holiday_str.strip(), cat_str.strip(), name_str.strip()
if not "VIP" in cat_str:
continue
day, month, year = date_str.split(".")
if not(year):
age_str = ""
year = datetime.now().year
else:
year = int(year)
age = datetime.now().year - year
age_str = "(%d)" % age
dt = date(year, int(month), int(day))
yield dt, " ".join([name_str, age_str])
def gen(year, moon, holidays, happydays):
first_day = date(year, 1, 1)
last_day = date(year, 12, 31)
first_week_day = first_day - timedelta(days=first_day.weekday())
last_week_day = last_day + timedelta(days=6-first_day.weekday())
calendar_range = last_week_day - first_week_day
week_count = (calendar_range.days+1) / 7
for week in range(week_count):
month_name = (first_week_day + timedelta(days = 7*week)).strftime("%B")
wl = [str(week+1), month_name] # week num, month name
for day_of_week in range(7):
cur = first_week_day + timedelta(days = 7*week + day_of_week)
wl.append(cur.strftime("%A")) # day name
wl.append(str(cur.timetuple().tm_yday)) # day num in year
wl.append(str(cur.day)) # day in month
moon_str = "%s %s" % (moon[cur][0], moon[cur][1].strftime("%H:%M")) if cur in moon else ""
wl.append(moon_str) # moon phase
holiday = holidays[cur] if cur in holidays else ""
wl.append(holiday) # holiday
happyday = happydays[cur] if cur in happydays else ""
wl.append(happyday) # happyday
print ";".join(wl)
def main():
moon = dict(get_moon("moon.csv"))
holidays = dict(get_holidays("holidays.csv"))
happydays = dict(get_happydays("../../etc/happydays.txt"))
gen(2017, moon, holidays, happydays)
main()
1. 1.;Den obnovy samostatného českého státu
1. 1.;Nový rok
17. 4.;Velikonoční pondělí
14. 4.;Velký pátek
1. 5.;Svátek práce
8. 5.;Den vítězství
5. 7.;Den slovanských věrozvěstů Cyrila a Metoděje
6. 7.;Den upálení mistra Jana Husa
28. 9.;Den české státnosti
28. 10.;Den vzniku samostatného československého státu
17. 11.;Den boje za svobodu a demokracii
24. 12.;Štědrý den
25. 12.;1. svátek vánoční
26. 12.;2. svátek vánoční
moon.csv 0 → 100644
First Quarter ;January 5, Th.;20:47
Full Moon ;January 12, Th.;12:35
Last Quarter ;January 19, Th.;23:14
New Moon ;January 28, Sa.;01:08
First Quarter ;February 4, Sa.;05:19
Full Moon ;February 11, Sa.;01:33
Last Quarter ;February 18, Sa.;20:35
New Moon ;February 26, Su.;16:00
First Quarter ;March 5, Su.;12:33
Full Moon ;March 12, Su.;15:54
Last Quarter ;March 20, Mo.;17:01
New Moon ;March 28, Tu.;04:59
First Quarter ;April 3, Mo.;20:40
Full Moon ;April 11, Tu.;08:09
Last Quarter ;April 19, We.;12:00
New Moon ;April 26, We.;14:18
First Quarter ;May 3, We.;04:48
Full Moon ;May 10, We.;23:43
Last Quarter ;May 19, Fr.;02:35
New Moon ;May 25, Th.;21:46
First Quarter ;June 1, Th.;14:43
Full Moon ;June 9, Fr.;15:11
Last Quarter ;June 17, Sa.;13:35
New Moon ;June 24, Sa.;04:32
First Quarter ;July 1, Sa.;02:51
Full Moon ;July 9, Su.;06:08
Last Quarter ;July 16, Su.;21:27
New Moon ;July 23, Su.;11:47
First Quarter ;July 30, Su.;17:23
Full Moon ;August 7, Mo.;20:12
Last Quarter ;August 15, Tu.;03:16
New Moon ;August 21, Mo.;20:31
First Quarter ;August 29, Tu.;10:14
Full Moon ;September 6, We.;09:04
Last Quarter ;September 13, We.;08:26
New Moon ;September 20, We.;07:30
First Quarter ;September 28, Th.;04:55
Full Moon ;October 5, Th.;20:41
Last Quarter ;October 12, Th.;14:27
New Moon ;October 19, Th.;21:12
First Quarter ;October 28, Sa.;00:23
Full Moon ;November 4, Sa.;06:24
Last Quarter ;November 10, Fr.;21:38
New Moon ;November 18, Sa.;12:42
First Quarter ;November 26, Su.;18:03
Full Moon ;December 3, Su.;16:48
Last Quarter ;December 10, Su.;08:53
New Moon ;December 18, Mo.;07:31
First Quarter ;December 26, Tu.;10:20
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment