|
|
ttsv2tcal - ics2txt - convert icalendar .ics file to plain text |
|
|
 |
git clone git://bitreich.org/ics2txt git://hg6vgqziawt5s4dj.onion/ics2txt (git://bitreich.org) |
|
|
 |
Log |
|
|
 |
Files |
|
|
 |
Refs |
|
|
 |
Tags |
|
|
 |
README |
|
|
|
--- |
|
|
|
ttsv2tcal (1495B) |
|
|
|
--- |
|
|
|
1 #!/usr/bin/awk -f |
|
|
|
2 |
|
|
|
3 function isleap(year) |
|
|
|
4 { |
|
|
|
5 return (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0) |
|
|
|
6 } |
|
|
|
7 |
|
|
|
8 function mdays(mon, year) |
|
|
|
9 { |
|
|
|
10 return (mon == 2) ? (28 + isleap(year)) : (30 + (mon + (mon > 7)) % 2) |
|
|
|
11 } |
|
|
|
12 |
|
|
|
13 function gmtime(sec, tm) |
|
|
|
14 { |
|
|
|
15 tm["year"] = 1970 |
|
|
|
16 while (sec >= (s = 86400 * (365 + isleap(tm["year"])))) { |
|
|
|
17 tm["year"]++ |
|
|
|
18 sec -= s |
|
|
|
19 } |
|
|
|
20 tm["mon"] = 1 |
|
|
|
21 while (sec >= (s = 86400 * mdays(tm["mon"], tm["year"]))) { |
|
|
|
22 tm["mon"]++ |
|
|
|
23 sec -= s |
|
|
|
24 } |
|
|
|
25 tm["mday"] = 1 |
|
|
|
26 while (sec >= (s = 86400)) { |
|
|
|
27 tm["mday"]++ |
|
|
|
28 sec -= s |
|
|
|
29 } |
|
|
|
30 tm["hour"] = 0 |
|
|
|
31 while (sec >= 3600) { |
|
|
|
32 tm["hour"]++ |
|
|
|
33 sec -= 3600 |
|
|
|
34 } |
|
|
|
35 tm["min"] = 0 |
|
|
|
36 while (sec >= 60) { |
|
|
|
37 tm["min"]++ |
|
|
|
38 sec -= 60 |
|
|
|
39 } |
|
|
|
40 tm["sec"] = sec |
|
|
|
41 } |
|
|
|
42 |
|
|
|
43 function localtime(sec, tm, |
|
|
|
44 tz, h, m) |
|
|
|
45 { |
|
|
|
46 return gmtime(sec + TZOFFSET, tm) |
|
|
|
47 } |
|
|
|
48 |
|
|
|
49 BEGIN { |
|
|
|
50 "date +%z" | getline tz |
|
|
|
51 close("date +%z") |
|
|
|
52 TZOFFSET = substr(tz, 1, 1) substr(tz, 2, 2)*3600 + substr(tz, 4, 2)*60 |
|
|
|
53 |
|
|
|
54 print("TZ" tz) |
|
|
|
55 |
|
|
|
56 FS = "\t" |
|
|
|
57 } |
|
|
|
58 |
|
|
|
59 NR == 1 { |
|
|
|
60 for (i = 1; i <= NF; i++) |
|
|
|
61 name[i] = $i |
|
|
|
62 next |
|
|
|
63 } |
|
|
|
64 |
|
|
|
65 { |
|
|
|
66 for (i = 1; i <= NF; i++) |
|
|
|
67 ev[name[i]] = $i |
|
|
|
68 |
|
|
|
69 print("") |
|
|
|
70 |
|
|
|
71 localtime(ev["beg"] + offset, tm) |
|
|
|
72 printf("%04d-%02d-%02d %02d:%02d\n", |
|
|
|
73 tm["year"], tm["mon"], tm["mday"], tm["hour"], tm["min"]) |
|
|
|
74 delete ev["beg"] |
|
|
|
75 |
|
|
|
76 localtime(ev["end"] + offset, tm) |
|
|
|
77 printf("%04d-%02d-%02d %02d:%02d\n", |
|
|
|
78 tm["year"], tm["mon"], tm["mday"], tm["hour"], tm["min"]) |
|
|
|
79 delete ev["end"] |
|
|
|
80 |
|
|
|
81 for (i = 1; i <= NF; i++) { |
|
|
|
82 if (name[i] in ev && ev[name[i]]) |
|
|
|
83 printf(" %s: %s\n", name[i], ev[name[i]]) |
|
|
|
84 } |
|
|
|
85 |
|
|
|
86 delete ev |
|
|
|
87 } |
|
|
|
88 |
|
|
|
89 END { |
|
|
|
90 print("") |
|
|
|
91 } |
|