public bool IsFullMoonDay(int month, int day) { YearlyPanchangData data = _group.PanchangDataForYear[_year]; if (data._panchangData[(month - 1) * 31 + day - 1]._fieldValues[(int)FieldType.Tithi] == "Purnima") { return(true); } return(false); }
public bool IsNewMoonDay(int month, int day) { YearlyPanchangData data = _group.PanchangDataForYear[_year]; Debug.Assert(data._panchangData[(month - 1) * 31 + day - 1].Day == day); Debug.Assert(data._panchangData[(month - 1) * 31 + day - 1].Month == month); if (data._panchangData[(month - 1) * 31 + day - 1]._fieldValues[(int)FieldType.Tithi] == "Amavasya") { return(true); } return(false); }
public void GetDateData( int month, int day, out bool isNewMoonDay, out bool isFullMoonDay, out String festival, out String paksha, out String nakshatra, out String tamilMonth) { YearlyPanchangData data = _group.PanchangDataForYear[_year]; isNewMoonDay = false; isFullMoonDay = false; Debug.Assert(data._panchangData[(month - 1) * 31 + day - 1] != null); Debug.Assert(data._panchangData[(month - 1) * 31 + day - 1].Day == day); Debug.Assert(data._panchangData[(month - 1) * 31 + day - 1].Month == month); if (data._panchangData[(month - 1) * 31 + day - 1]._fieldValues[(int)FieldType.Tithi] == "Amavasya") { isNewMoonDay = true; } if (data._panchangData[(month - 1) * 31 + day - 1]._fieldValues[(int)FieldType.Tithi].Trim() == "Krishna Amavasya") { isNewMoonDay = true; } if (data._panchangData[(month - 1) * 31 + day - 1]._fieldValues[(int)FieldType.Tithi] == "Purnima") { isFullMoonDay = true; } if (data._panchangData[(month - 1) * 31 + day - 1]._fieldValues[(int)FieldType.Tithi].Trim() == "Shukla Purnima") { isFullMoonDay = true; } if (_year == 2012) { festival = data._panchangData[(month - 1) * 31 + day - 1]._fieldValues[(int)FieldType.Festival]; } else { festival = FestivalDataGetter.GetFestivalData(_year, month, day, this._group.city._timeZone); } paksha = data._panchangData[(month - 1) * 31 + day - 1]._fieldValues[(int)FieldType.Paksha]; nakshatra = data._panchangData[(month - 1) * 31 + day - 1]._fieldValues[(int)FieldType.Nakshatra]; tamilMonth = data._panchangData[(month - 1) * 31 + day - 1]._fieldValues[(int)FieldType.TamilMonth]; }
public String GetFestival(int month, int day) { YearlyPanchangData data = _group.PanchangDataForYear[_year]; String festival; if (_year == 2012) { festival = data._panchangData[(month - 1) * 31 + day - 1]._fieldValues[(int)FieldType.Festival]; } else { festival = FestivalDataGetter.GetFestivalData(_year, month, day, this._group.city._timeZone); } return(festival); }
public PanchangData GetPanchangData(int month, int day) { YearlyPanchangData data = _group.PanchangDataForYear[_year]; return(data._panchangData[(month - 1) * 31 + day - 1]); }
public static PanchangData GetCalendarDataPerCityAndYear(int date, int month, int Year, String UrlToken, TimeZoneValues timeZone) { var dayResult = new PanchangData(); HtmlAgilityPack.HtmlWeb web = new HtmlWeb(); YearlyPanchangData yearPanchangData = new YearlyPanchangData(); PanchangData[] panchangData = new PanchangData[12 * 31]; yearPanchangData._panchangData = panchangData; int day = 0; String fileName = String.Format("{0}RssFeed\\Calendar-{1}-{2}.html", AppDomain.CurrentDomain.BaseDirectory, month, Year); DataContractSerializer ser = new DataContractSerializer(typeof(YearlyPanchangData)); try { HtmlDocument document = new HtmlDocument(); if (File.Exists(fileName)) { document.Load(fileName); //using (var stream = File.Open(fileName, FileMode.Open, FileAccess.Write, FileShare.Read)) //{ //} } else { FileStream fs = new FileStream(fileName, FileMode.Create); String url = String.Format("http://www.mypanchang.com/phppanchang.php?yr={0}&cityhead=&cityname={2}&monthtype=0&mn={1}", Year, month - 1, UrlToken); try { var data = web.Load(url); document = data; var sr = new StreamWriter(fs); sr.Write(data.Text); } catch (Exception exp) { } } day = 0; PanchangData pData = null; String log = null; foreach (HtmlNode node in document.DocumentNode.SelectNodes("//table")) { HtmlNodeCollection coll = node.ChildNodes; foreach (HtmlNode data in coll) { log += data.InnerText.Trim(); log += "\n"; log += "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"; log += "\n"; //Console.WriteLine(log); String input = data.InnerText; String pattern1 = @"Panchang for"; Match match = Regex.Match(input, pattern1); if (match.Success) { if (pData != null) { // Console.WriteLine("Year {0} Month {1} Day {2}", Year, month, day); for (int j = 0; j < (int)(FieldType.MaxFields); j++) { if ((j != (int)FieldType.None) && (j != (int)FieldType.TamilYear) && (j != (int)FieldType.Festival)) { if (pData._fieldValues[j] == null) { Console.WriteLine("Field Value {0} is null", ((FieldType)j).ToString()); Console.WriteLine(log); } } //Console.WriteLine("{0}: {1}", (FieldType)j, pData._fieldValues[j]); } // Stash away the old data panchangData[(month - 1) * 31 + (day - 1)] = pData; } ; // A new day got started. pData = new PanchangData(Year, month, day + 1); day++; log = null; //if (day > 30) break; } pattern1 = @"Shalivahan Shaka: (\d\d\d\d) \((\w+) Samvatsara\),\ (\w+) Year \(North India\) (\d\d\d\d),\ (\w+ \w+) \(Gujarat\) (\d\d\d\d),\ Ayana:(\w+) \ Ritu:(\w+), Vedic Ritu:(\w+), Amavasyant\s+(\w+) (\w+) Paksha,\ Tamil Month: (\w+)"; // Shalivahan Shaka: 1937 (Manmatha Samvatsara), Vikrami Year (North India) 2072, Vikram Samvat (Gujarat) 2071, Ayana:Uttarayana Ritu:Grishma, Vedic Ritu:Grishma, Amavasyant Adhika Ashaadha Shukla Paksha, Tamil Month: Aani match = Regex.Match(input, pattern1); currentIndex = 0; if (match.Success) { pData._fieldValues[(int)FieldType.TamilYear] = match.Groups[2].Value + " " + match.Groups[1].Value; pData._fieldValues[(int)FieldType.NorthYear] = match.Groups[3].Value + " " + match.Groups[4].Value; pData._fieldValues[(int)FieldType.GujaratYear] = match.Groups[5].Value + " " + match.Groups[6].Value; pData._fieldValues[(int)FieldType.Ayana] = match.Groups[7].Value; pData._fieldValues[(int)FieldType.Ritu] = match.Groups[8].Value; pData._fieldValues[(int)FieldType.VedicRitu] = match.Groups[9].Value; pData._fieldValues[(int)FieldType.SanskritMonth] = match.Groups[10].Value; pData._fieldValues[(int)FieldType.Paksha] = match.Groups[11].Value; pData._fieldValues[(int)FieldType.TamilMonth] = match.Groups[12].Value; pData._fieldValues[(int)FieldType.Festival] = null; } // For some cases there is an extra word after Amavasyant String pattern1_5 = @"Shalivahan Shaka: (\d\d\d\d) \((\w+) Samvatsara\),\ (\w+) Year \(North India\) (\d\d\d\d),\ (\w+ \w+) \(Gujarat\) (\d\d\d\d),\ Ayana:(\w+) \ Ritu:(\w+), Vedic Ritu:(\w+), Amavasyant\s+\w+ (\w+) (\w+) Paksha,\ Tamil Month: (\w+)"; // Shalivahan Shaka: 1937 (Manmatha Samvatsara), Vikrami Year (North India) 2072, Vikram Samvat (Gujarat) 2071, Ayana:Uttarayana Ritu:Grishma, Vedic Ritu:Grishma, Amavasyant Adhika Ashaadha Shukla Paksha, Tamil Month: Aani match = Regex.Match(input, pattern1_5); currentIndex = 0; if (match.Success) { pData._fieldValues[(int)FieldType.TamilYear] = match.Groups[2].Value + " " + match.Groups[1].Value; pData._fieldValues[(int)FieldType.NorthYear] = match.Groups[3].Value + " " + match.Groups[4].Value; pData._fieldValues[(int)FieldType.GujaratYear] = match.Groups[5].Value + " " + match.Groups[6].Value; pData._fieldValues[(int)FieldType.Ayana] = match.Groups[7].Value; pData._fieldValues[(int)FieldType.Ritu] = match.Groups[8].Value; pData._fieldValues[(int)FieldType.VedicRitu] = match.Groups[9].Value; pData._fieldValues[(int)FieldType.SanskritMonth] = match.Groups[10].Value; pData._fieldValues[(int)FieldType.Paksha] = match.Groups[11].Value; pData._fieldValues[(int)FieldType.TamilMonth] = match.Groups[12].Value; pData._fieldValues[(int)FieldType.Festival] = null; } // @"Sunrise:07:36:10Sunset:17:08:38Moonrise:23:54:46"; String pattern2 = @"Sunrise:([\d:]+)Sunset:([\d:]+)Moonrise:([\d:]+)"; match = Regex.Match(input, pattern2); if (match.Success) { pData._fieldValues[(int)FieldType.Sunrise] = match.Groups[1].Value; pData._fieldValues[(int)FieldType.Sunset] = match.Groups[2].Value; pData._fieldValues[(int)FieldType.Moonrise] = match.Groups[3].Value; } pattern2 = @"Sunrise:([\d:]+)Sunset:([\d:]+)Moonrise:None"; match = Regex.Match(input, pattern2); if (match.Success) { pData._fieldValues[(int)FieldType.Sunrise] = match.Groups[1].Value; pData._fieldValues[(int)FieldType.Sunset] = match.Groups[2].Value; pData._fieldValues[(int)FieldType.Moonrise] = "None"; } String pattern3 = @"Sun:(\w+)Entering"; match = Regex.Match(input, pattern3); if (match.Success) { pData._fieldValues[(int)FieldType.SunRasi] = match.Groups[1].Value; } String pattern4 = @"Chandra:(\w+)Entering"; match = Regex.Match(input, pattern4); if (match.Success) { pData._fieldValues[(int)FieldType.MoonRasi] = match.Groups[1].Value; } String pattern5 = @"Chandra:(\w+)Entering"; match = Regex.Match(input, pattern5); if (match.Success) { pData._fieldValues[(int)FieldType.MoonRasi] = match.Groups[1].Value; } pattern1 = @"Tithi:([\w ]+)End time:[\w \d:+]+Nakshatra:([\w\.]+) "; match = Regex.Match(input, pattern1); if (match.Success) { pData._fieldValues[(int)FieldType.Tithi] = match.Groups[1].Value; pData._fieldValues[(int)FieldType.Nakshatra] = match.Groups[2].Value; } //Rahukalam:11:10:50-12:22:24Yamagandam:14:45:31-15:57:05Gulikai:08:47:43-09:59:17Abhijit Muhurta:12:03:19-12:41:29 pattern1 = @"Rahukalam:([\d:-]+)Yamagandam:([\d:-]+)Gulikai:([\d:-]+)"; match = Regex.Match(input, pattern1); if (match.Success) { pData._fieldValues[(int)FieldType.RahuKalam] = match.Groups[1].Value; pData._fieldValues[(int)FieldType.YamaGandam] = match.Groups[2].Value; pData._fieldValues[(int)FieldType.Gulikai] = match.Groups[3].Value; } pattern1 = @"Yoga:(\w+)End"; match = Regex.Match(input, pattern1); if (match.Success) { pData._fieldValues[(int)FieldType.Yoga] = match.Groups[1].Value; } pattern1 = @"Karana:(\w+)End"; match = Regex.Match(input, pattern1); if (match.Success) { pData._fieldValues[(int)FieldType.Karana] = match.Groups[1].Value; } } } panchangData[(month - 1) * 31 + (day - 1)] = pData; dayResult = panchangData.Where(x => !Object.ReferenceEquals(x, null) && x.Day == date).FirstOrDefault(); } catch (Exception e) { //List<Process> locks = Win32Processes.GetProcessesLockingFile(fileName); } return(dayResult); }