def writeFirstDayXml(xml, loc, vc): vcStart = GCGregorianDate( date=GetFirstDayOfYear(loc.GetEarthData(), vcStart.year)) vcStart.InitWeekDay() # write xml.write("<xml>\n") xml.write("\t<request name=\"FirstDay\" version=\"") xml.write(GCStrings.getString(130)) xml.write("\">\n") xml.write("\t\t<arg name=\"longitude\" val=\"") xml.write(str(loc.m_fLongitude)) xml.write("\" />\n") xml.write("\t\t<arg name=\"latitude\" val=\"") xml.write(str(loc.m_fLatitude)) xml.write("\" />\n") xml.write("\t\t<arg name=\"year\" val=\"") xml.write(str(vcStart.year)) xml.write("\" />\n") xml.write("\t</request>\n") xml.write("\t<result name=\"FirstDay_of_GaurabdaYear\">\n") xml.write("\t\t<firstday date=\"") xml.write(str(vcStart)) xml.write("\" dayweekid = \"") xml.write(str(vcStart.dayOfWeek)) xml.write("\" dayweek=\"") xml.write(GCStrings.getString(vcStart.dayOfWeek)) xml.write("\" />\n") xml.write("\t</result>\n") xml.write("</xml>\n") return 0
def CalculateEvents(self, loc, vcStart, vcEnd): sun = SUNDATA() ndst = 0 self.m_location.Set(loc) self.m_vcStart.Set(vcStart) self.m_vcEnd.Set(vcEnd) vcNext = GCGregorianDate() earth = loc.GetEarthData() vc = GCGregorianDate(date=vcStart) vcAdd = GCGregorianDate(date=vcStart) vcAdd.InitWeekDay() previousLongitude = -100 todayLongitude = 0 fromTimeLimit = 0 while vcAdd.IsBeforeThis(vcEnd): if (GCDisplaySettings.getValue(COREEVENTS_SUN)): ndst = GCTimeZone.determineDaylightChange( vcAdd, loc.m_nTimezoneId) sun.SunCalc(vcAdd, earth) vcAdd.shour = sun.arunodaya.GetDayTime() self.AddEvent(vcAdd, CCTYPE_S_ARUN, 0, ndst) vcAdd.shour = sunRise = sun.rise.GetDayTime() self.AddEvent(vcAdd, CCTYPE_S_RISE, 0, ndst) vcAdd.shour = sun.noon.GetDayTime() self.AddEvent(vcAdd, CCTYPE_S_NOON, 0, ndst) vcAdd.shour = sunSet = sun.set.GetDayTime() self.AddEvent(vcAdd, CCTYPE_S_SET, 0, ndst) else: ndst = GCTimeZone.determineDaylightChange( vcAdd, loc.m_nTimezoneId) sun.SunCalc(vcAdd, earth) sunRise = sun.rise.GetDayTime() sunSet = sun.set.GetDayTime() if (GCDisplaySettings.getValue(COREEVENTS_ASCENDENT)): todayLongitude = sun.longitude_deg vcAdd.shour = sunRise todaySunriseHour = sunRise if (previousLongitude < -10): prevSunrise = GCGregorianDate(date=vcAdd) prevSunrise.PreviousDay() sun.SunCalc(prevSunrise, earth) previousSunriseHour = sun.rise.GetDayTime() - 1 previousLongitude = sun.longitude_deg fromTimeLimit = 0 jd = vcAdd.GetJulianComplete() ayan = GCAyanamsha.GetAyanamsa(jd) r1 = GCMath.putIn360(previousLongitude - ayan) / 30 r2 = GCMath.putIn360(todayLongitude - ayan) / 30 while (r2 > r1 + 13): r2 -= 12.0 while (r2 < r1 + 11): r2 += 12.0 a = (r2 - r1) / (todaySunriseHour - previousSunriseHour) b = r2 - a * todaySunriseHour tr = ceil(r1) for tr in range(ceil(r1), ceil(r2)): tm = (tr - b) / a if (tm > fromTimeLimit): vcNext.Set(vcAdd) vcNext.shour = tm vcNext.NormalizeValues() self.AddEvent(vcNext, CCTYPE_ASCENDENT, tr, ndst) previousLongitude = todayLongitude previousSunriseHour = todaySunriseHour - 1 fromTimeLimit = previousSunriseHour if (GCDisplaySettings.getValue(COREEVENTS_RAHUKALAM)): r1, r2 = CalculateKala(sunRise, sunSet, vcAdd.dayOfWeek, KT_RAHU_KALAM) vcAdd.shour = r1 self.AddEvent(vcAdd, CCTYPE_KALA_START, KT_RAHU_KALAM, ndst) vcAdd.shour = r2 self.AddEvent(vcAdd, CCTYPE_KALA_END, KT_RAHU_KALAM, ndst) if (GCDisplaySettings.getValue(COREEVENTS_YAMAGHANTI)): r1, r2 = CalculateKala(sunRise, sunSet, vcAdd.dayOfWeek, KT_YAMA_GHANTI) vcAdd.shour = r1 self.AddEvent(vcAdd, CCTYPE_KALA_START, KT_YAMA_GHANTI, ndst) vcAdd.shour = r2 self.AddEvent(vcAdd, CCTYPE_KALA_END, KT_YAMA_GHANTI, ndst) if (GCDisplaySettings.getValue(COREEVENTS_GULIKALAM)): r1, r2 = CalculateKala(sunRise, sunSet, vcAdd.dayOfWeek, KT_GULI_KALAM) vcAdd.shour = r1 self.AddEvent(vcAdd, CCTYPE_KALA_START, KT_GULI_KALAM, ndst) vcAdd.shour = r2 self.AddEvent(vcAdd, CCTYPE_KALA_END, KT_GULI_KALAM, ndst) if (GCDisplaySettings.getValue(COREEVENTS_ABHIJIT_MUHURTA)): r1, r2 = CalculateKala(sunRise, sunSet, vcAdd.dayOfWeek, KT_ABHIJIT) if (r1 > 0 and r2 > 0): vcAdd.shour = r1 self.AddEvent(vcAdd, CCTYPE_KALA_START, KT_ABHIJIT, ndst) vcAdd.shour = r2 self.AddEvent(vcAdd, CCTYPE_KALA_END, KT_ABHIJIT, ndst) vcAdd.NextDay() if (GCDisplaySettings.getValue(COREEVENTS_TITHI)): vcAdd.Set(vc) vcAdd.shour = 0.0 while vcAdd.IsBeforeThis(vcEnd): nData = GCTithi.GetNextTithiStart(earth, vcAdd, vcNext) if (vcNext.GetDayInteger() < vcEnd.GetDayInteger()): vcNext.InitWeekDay() ndst = GCTimeZone.determineDaylightChange( vcNext, loc.m_nTimezoneId) self.AddEvent(vcNext, CCTYPE_TITHI, nData, ndst) else: break vcAdd.Set(vcNext) vcAdd.shour += 0.2 if (vcAdd.shour >= 1.0): vcAdd.shour -= 1.0 vcAdd.NextDay() if (GCDisplaySettings.getValue(COREEVENTS_NAKSATRA)): vcAdd.Set(vc) vcAdd.shour = 0.0 while vcAdd.IsBeforeThis(vcEnd): nData = GCNaksatra.GetNextNaksatra(earth, vcAdd, vcNext) if (vcNext.GetDayInteger() < vcEnd.GetDayInteger()): vcNext.InitWeekDay() ndst = GCTimeZone.determineDaylightChange( vcNext, loc.m_nTimezoneId) self.AddEvent(vcNext, CCTYPE_NAKS, nData, ndst) else: break vcAdd.Set(vcNext) vcAdd.shour += 0.2 if (vcAdd.shour >= 1.0): vcAdd.shour -= 1.0 vcAdd.NextDay() if (GCDisplaySettings.getValue(COREEVENTS_YOGA)): vcAdd.Set(vc) vcAdd.shour = 0.0 while vcAdd.IsBeforeThis(vcEnd): nData = GCYoga.GetNextYogaStart(earth, vcAdd, vcNext) if (vcNext.GetDayInteger() < vcEnd.GetDayInteger()): vcNext.InitWeekDay() ndst = GCTimeZone.determineDaylightChange( vcNext, loc.m_nTimezoneId) self.AddEvent(vcNext, CCTYPE_YOGA, nData, ndst) else: break vcAdd.Set(vcNext) vcAdd.shour += 0.2 if (vcAdd.shour >= 1.0): vcAdd.shour -= 1.0 vcAdd.NextDay() if (GCDisplaySettings.getValue(COREEVENTS_SANKRANTI)): vcAdd.Set(vc) vcAdd.shour = 0.0 while vcAdd.IsBeforeThis(vcEnd): date, nData = GCSankranti.GetNextSankranti(vcAdd) vcNext.Set(date) if (vcNext.GetDayInteger() < vcEnd.GetDayInteger()): vcNext.InitWeekDay() ndst = GCTimeZone.determineDaylightChange( vcNext, loc.m_nTimezoneId) self.AddEvent(vcNext, CCTYPE_SANK, nData, ndst) else: break vcAdd.Set(vcNext) vcAdd.NextDay() if (GCDisplaySettings.getValue(COREEVENTS_MOONRASI)): vcAdd.Set(vc) vcAdd.shour = 0.0 while vcAdd.IsBeforeThis(vcEnd): nData = GetNextMoonRasi(earth, vcAdd, vcNext) if (vcNext.GetDayInteger() < vcEnd.GetDayInteger()): vcNext.InitWeekDay() ndst = GCTimeZone.determineDaylightChange( vcNext, loc.m_nTimezoneId) self.AddEvent(vcNext, CCTYPE_M_RASI, nData, ndst) else: break vcAdd.Set(vcNext) vcAdd.shour += 0.5 vcAdd.NormalizeValues() if (GCDisplaySettings.getValue(COREEVENTS_CONJUNCTION)): vcAdd.Set(vc) vcAdd.shour = 0.0 while vcAdd.IsBeforeThis(vcEnd): dlong = GCConjunction.GetNextConjunctionEx( vcAdd, vcNext, True, earth) if (vcNext.GetDayInteger() < vcEnd.GetDayInteger()): vcNext.InitWeekDay() ndst = GCTimeZone.determineDaylightChange( vcNext, loc.m_nTimezoneId) self.AddEvent( vcNext, CCTYPE_CONJ, GCRasi.GetRasi( dlong, GCAyanamsha.GetAyanamsa( vcNext.GetJulianComplete())), ndst) else: break vcAdd.Set(vcNext) vcAdd.NextDay() if (GCDisplaySettings.getValue(COREEVENTS_MOON)): vcAdd.Set(vc) vcAdd.shour = 0.0 while vcAdd.IsBeforeThis(vcEnd): vcNext.Set(MOONDATA.GetNextRise(earth, vcAdd, True)) self.AddEvent(vcNext, CCTYPE_M_RISE, 0, ndst) vcNext.Set(MOONDATA.GetNextRise(earth, vcNext, False)) self.AddEvent(vcNext, CCTYPE_M_SET, 0, ndst) vcNext.shour += 0.05 vcNext.NormalizeValues() vcAdd.Set(vcNext) if self.b_sorted: self.Sort()
def writeXml(xml, loc, vcStart, vcEnd): dt = GCTime() zodiac = 0 d = GCGregorianDate(date=vcStart) xml.write("<xml>\n") xml.write("\t<request name=\"Sankranti\" version=\"") xml.write(GCStrings.getString(130)) xml.write("\">\n") xml.write("\t\t<arg name=\"longitude\" val=\"") xml.write(str(loc.m_fLongitude)) xml.write("\" />\n") xml.write("\t\t<arg name=\"latitude\" val=\"") xml.write(str(loc.m_fLatitude)) xml.write("\" />\n") xml.write("\t\t<arg name=\"timezone\" val=\"") xml.write(str(loc.m_fTimezone)) xml.write("\" />\n") xml.write("\t\t<arg name=\"location\" val=\"") xml.write(loc.m_strName) xml.write("\" />\n") xml.write("\t\t<arg name=\"startdate\" val=\"") xml.write(repr(vcStart)) xml.write("\" />\n") xml.write("\t\t<arg name=\"enddate\" val=\"") xml.write(repr(vcEnd)) xml.write("\" />\n") xml.write("\t</request>\n") xml.write("\t<result name=\"SankrantiList\">\n") while d.IsBeforeThis(vcEnd): nextDate, zodiac = GetNextSankranti(d) d.Set(nextDate) d.InitWeekDay() xml.write("\t\t<sank date=\"") xml.write(str(d)) xml.write("\" ") xml.write("dayweekid=\"") xml.write(str(d.dayOfWeek)) xml.write("\" dayweek=\"") xml.write(GCStrings.getString(d.dayOfWeek)) xml.write("\" ") dt.SetDegTime(360 * d.shour) xml.write(" time=\"") xml.write(repr(dt)) xml.write("\" >\n") xml.write("\t\t\t<zodiac sans=\"") xml.write(GCStrings.GetSankrantiName(zodiac)) xml.write("\" eng=\"") xml.write(GCStrings.GetSankrantiNameEn(zodiac)) xml.write("\" id=\"") xml.write(str(zodiac)) xml.write("\" />\n") xml.write("\t\t</sank>\n") d.NextDay() d.NextDay() xml.write("\t</result>\n") xml.write("</xml>") return 1
class TToday: def __init__(self): self.currentDay = GCGregorianDate() self.calendar = TCalendar() def Calculate(self, dateTime, location): self.currentDay.Set(dateTime) self.currentDay.InitWeekDay() vc2 = GCGregorianDate(date = self.currentDay, addDays=-4) vc2.tzone = location.m_fTimezone self.calendar.CalculateCalendar(location, vc2, 9) def GetCurrentDay(self): i = self.calendar.FindDate(self.currentDay) return self.calendar.GetDay(i) def formatPlain(self, stream): p = self.GetCurrentDay() loc = self.calendar.m_Location vc = p.date sb = GCStringBuilder(stream) sb.Format = SBTF_TEXT if (p == None): return stream.write("{} ({}, {}, Timezone: {})\r\n\r\n[{} - {}]\r\n {}, {} {}\r\n {} {}, {} Gaurabda\r\n\r\n".format(loc.m_strName, GCEarthData.GetTextLatitude(loc.m_fLatitude), GCEarthData.GetTextLongitude(loc.m_fLongitude), GCTimeZone.GetTimeZoneName(loc.m_nTimezoneId), vc, GCStrings.getString(vc.dayOfWeek), GCStrings.GetTithiName(p.astrodata.nTithi), GCStrings.GetPaksaName(p.astrodata.nPaksa), GCStrings.getString(20), GCStrings.GetMasaName(p.astrodata.nMasa), GCStrings.getString(22), p.astrodata.nGaurabdaYear)) self.WriteTodayInfo(sb,p) def formatRtf(self, stream): p = self.GetCurrentDay() loc = self.calendar.m_Location vc = p.date sb = GCStringBuilder(stream) sb.Format = SBTF_RTF sb.fontSizeH1 = GCLayoutData.textSizeH1 sb.fontSizeH2 = GCLayoutData.textSizeH2 sb.fontSizeText = GCLayoutData.textSizeText sb.fontSizeNote = GCLayoutData.textSizeNote sb.AppendDocumentHeader() stream.write("\\f2\\fs{} {} ".format(GCLayoutData.textSizeH1, vc.GetDateTextWithTodayExt())) stream.write("\\par\\f2\\fs{} {{\\fs{} {} }}\\line {} ({}, {}, Timezone: {})\\par\r\n\\par\r\n {}, {} {}\\par\r\n {} {}, {} Gaurabda\\par\r\n\\par\r\n".format( GCLayoutData.textSizeText, GCLayoutData.textSizeText+4, GCStrings.getString(p.date.dayOfWeek), loc.m_strName, GCEarthData.GetTextLatitude(loc.m_fLatitude), GCEarthData.GetTextLongitude(loc.m_fLongitude), GCTimeZone.GetTimeZoneName(loc.m_nTimezoneId), GCStrings.GetTithiName(p.astrodata.nTithi), GCStrings.GetPaksaName(p.astrodata.nPaksa), GCStrings.getString(20), GCStrings.GetMasaName(p.astrodata.nMasa), GCStrings.getString(22), p.astrodata.nGaurabdaYear)) self.WriteTodayInfo(sb,p) def writeHtml(self, stream): p = self.GetCurrentDay() loc = self.calendar.m_Location vc = p.date sb = GCStringBuilder(stream) sb.Format = SBTF_HTML if (p == None): return stream.write("<html>\n<head>\n<title></title>") stream.write("<style>\n<!--\nbody {\n font-family:Verdana;\n font-size:9.5pt;\n}\n\ntd.hed {\n font-size:9.5pt;\n font-weight:bold;\n") stream.write(" background:#aaaaaa;\n color:white;\n text-align:center;\n vertical-align:center;\n padding-left:15pt;\n padding-right:15pt;\n") stream.write(" padding-top:5pt;\n padding-bottom:5pt;\n}\n-->\n</style>\n") stream.write("</head>\n") stream.write("<body>\n") stream.write("<h2>{}</h2>\n".format(vc.GetDateTextWithTodayExt())) stream.write("<h4>{}</h4>\n".format(loc.m_strFullName)) stream.write("<p> {}, {} {}<br> {} {}, {} Gaurabda</p>".format(GCStrings.GetTithiName(p.astrodata.nTithi), GCStrings.GetPaksaName(p.astrodata.nPaksa), GCStrings.getString(20), GCStrings.GetMasaName(p.astrodata.nMasa), GCStrings.getString(22), p.astrodata.nGaurabdaYear)) prevCountFest = 0 stream.write("<p>") self.WriteTodayInfo(sb,p) def WriteTodayInfo(self,sb,p): sb.AppendLine() stream = sb.Target for ed in p.dayEvents: if 'disp' not in ed or ed['disp'] == -1 or GCDisplaySettings.getValue(ed['disp']): if 'spec' in ed: sb.AppendHeader3(ed['text'],fillChar='-') else: sb.AppendString(ed['text']) sb.AppendLine() if GCDisplaySettings.getValue(45): tda = p.astrodata.sun.rise sb.AppendLine() stream.write("Brahma Muhurta {} - {} ({})".format(tda.short(-96), tda.short(-48), GCStrings.GetDSTSignature(p.hasDST))) if GCDisplaySettings.getValue(29): sb.AppendLine() tda = p.astrodata.sun.rise stream.write("{} {} ".format(GCStrings.getString(51), tda.short() )) if (GCDisplaySettings.getValue(32)): stream.write(" sandhya {} - {} ", tda.short(-24), tda.short(24)) stream.write(" ({})".format(GCStrings.GetDSTSignature(p.hasDST))) sb.AppendLine() if (GCDisplaySettings.getValue(30)): sb.AppendLine() tda = p.astrodata.sun.noon stream.write("{} {} ".format(GCStrings.getString(857), tda.short() )) if (GCDisplaySettings.getValue(32)): stream.write(" sandhya {} - {} ", tda.short(-24), tda.short(24)) stream.write(" ({})".format(GCStrings.GetDSTSignature(p.hasDST))) sb.AppendLine() if (GCDisplaySettings.getValue(31)): sb.AppendLine() tda = p.astrodata.sun.set stream.write("{} {} ".format(GCStrings.getString(52), tda.short() )) if (GCDisplaySettings.getValue(32)): stream.write(" sandhya {} - {} ", tda.short(-24), tda.short(24)) stream.write(" ({})".format(GCStrings.GetDSTSignature(p.hasDST))) sb.AppendLine() if (GCDisplaySettings.getValue(33)): sb.AppendLine() sb.AppendString(GCStrings.getString(51) + " info") sb.AppendLine() sb.AppendString(" Moon in {} {}".format(GCStrings.GetNaksatraName(p.astrodata.nNaksatra), GCStrings.getString(15))) if (GCDisplaySettings.getValue(47)): sb.AppendString(", {:.1f}% passed ({} Pada)".format(p.astrodata.nNaksatraElapse, GCStrings.getString(811+int(p.astrodata.nNaksatraElapse/25)))) if (GCDisplaySettings.getValue(46)): sb.AppendString(", Moon in {} {}".format( GCStrings.GetSankrantiName(p.astrodata.nMoonRasi), GCStrings.getString(105))) sb.AppendString(", {} {}".format(GCStrings.GetYogaName(p.astrodata.nYoga), GCStrings.getString(104))) sb.AppendLine() sb.AppendString(" Sun in {} {}.".format(GCStrings.GetSankrantiName(p.astrodata.nSunRasi), GCStrings.getString(105))) sb.AppendLine() sb.AppendNote() sb.AppendDocumentTail() def write(self,stream,format='html'): if format=='plain': self.formatPlain(stream) elif format=='rtf': self.formatRtf(stream) elif format=='html': self.writeHtml(stream)