def generateZoneinfoFiles(self, outputdir, minYear, maxYear=2018, links=True, windowsAliases=None, filterzones=None): # Empty current directory try: for root, dirs, files in os.walk(outputdir, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name)) except OSError: pass for zone in self.zones.itervalues(): if filterzones and zone.name not in filterzones: continue cal = Calendar() vtz = zone.vtimezone(cal, self.rules, minYear, maxYear) cal.addComponent(vtz) icsdata = cal.getText() fpath = os.path.join(outputdir, zone.name + ".ics") if not os.path.exists(os.path.dirname(fpath)): os.makedirs(os.path.dirname(fpath)) with open(fpath, "w") as f: f.write(icsdata) if self.verbose: print("Write path: %s" % (fpath,)) if links: if windowsAliases is not None: self.parseWindowsAliases(windowsAliases) link_list = [] for linkTo, linkFrom in sorted(self.links.iteritems(), key=lambda x: x[0]): # Check for existing output file fromPath = os.path.join(outputdir, linkFrom + ".ics") if not os.path.exists(fromPath): print("Missing link from: %s to %s" % (linkFrom, linkTo,)) continue with open(fromPath) as f: icsdata = f.read() icsdata = icsdata.replace(linkFrom, linkTo) toPath = os.path.join(outputdir, linkTo + ".ics") if not os.path.exists(os.path.dirname(toPath)): os.makedirs(os.path.dirname(toPath)) with open(toPath, "w") as f: f.write(icsdata) if self.verbose: print("Write link: %s" % (linkTo,)) link_list.append("%s\t%s" % (linkTo, linkFrom,)) # Generate link mapping file linkPath = os.path.join(outputdir, "links.txt") with open(linkPath, "w") as f: f.write("\n".join(link_list))
def vtimezones(self, minYear, maxYear=2018, filterzones=None): """ Generate iCalendar data for all VTIMEZONEs or just those specified """ cal = Calendar() for zone in self.zones.itervalues(): if filterzones and zone.name not in filterzones: continue vtz = zone.vtimezone(cal, self.rules, minYear, maxYear) cal.addComponent(vtz) return cal.getText()
def generateZoneinfoFiles(self, outputdir, minYear, maxYear=2018, links=True, windowsAliases=None, filterzones=None): # Empty current directory try: for root, dirs, files in os.walk(outputdir, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name)) except OSError: pass for zone in self.zones.itervalues(): if filterzones and zone.name not in filterzones: continue cal = Calendar() vtz = zone.vtimezone(cal, self.rules, minYear, maxYear) cal.addComponent(vtz) icsdata = cal.getText() fpath = os.path.join(outputdir, zone.name + ".ics") if not os.path.exists(os.path.dirname(fpath)): os.makedirs(os.path.dirname(fpath)) with open(fpath, "w") as f: f.write(icsdata) if self.verbose: print("Write path: %s" % (fpath, )) if links: if windowsAliases is not None: self.parseWindowsAliases(windowsAliases) link_list = [] for linkTo, linkFrom in sorted(self.links.iteritems(), key=lambda x: x[0]): # Check for existing output file fromPath = os.path.join(outputdir, linkFrom + ".ics") if not os.path.exists(fromPath): print("Missing link from: %s to %s" % ( linkFrom, linkTo, )) continue with open(fromPath) as f: icsdata = f.read() icsdata = icsdata.replace(linkFrom, linkTo) toPath = os.path.join(outputdir, linkTo + ".ics") if not os.path.exists(os.path.dirname(toPath)): os.makedirs(os.path.dirname(toPath)) with open(toPath, "w") as f: f.write(icsdata) if self.verbose: print("Write link: %s" % (linkTo, )) link_list.append("%s\t%s" % ( linkTo, linkFrom, )) # Generate link mapping file linkPath = os.path.join(outputdir, "links.txt") with open(linkPath, "w") as f: f.write("\n".join(link_list))