🗓️ Chinese Traditional Calendar

Core Source Code & Cultural Intelligence Implementation

Python 3.9 Streamlit Cultural AI Lunar Calendar

🔍 About This Code Showcase

This curated code snippet demonstrates how the Chinese Traditional Calendar integrates lunar calendar calculations, traditional festival recognition, and cultural wisdom for authentic cultural experiences.

Full deployment scripts, API integrations, and proprietary details are omitted for clarity and security. This showcase highlights the core cultural intelligence and calendar computation algorithms.

🌙 Core Algorithm: Lunar Calendar Intelligence Engine

The foundation of the Chinese Traditional Calendar is its ability to accurately calculate lunar dates, identify traditional festivals, and provide culturally relevant wisdom and guidance:

📄 lunar_calendar_engine.py
import datetime import google.generativeai as genai from typing import Dict, List, Optional, Tuple import math class ChineseLunarCalendar: """ Advanced lunar calendar system that combines astronomical calculations with traditional Chinese cultural knowledge for authentic calendar experiences. """ def __init__(self, api_key: str): genai.configure(api_key=api_key) self.cultural_ai = genai.GenerativeModel('gemini-pro') # Traditional Chinese zodiac animals with cultural significance self.zodiac_animals = [ {'name': '鼠', 'english': 'Rat', 'traits': ['intelligent', 'adaptable', 'resourceful']}, {'name': '牛', 'english': 'Ox', 'traits': ['reliable', 'patient', 'methodical']}, {'name': '虎', 'english': 'Tiger', 'traits': ['brave', 'confident', 'charismatic']}, {'name': '兔', 'english': 'Rabbit', 'traits': ['gentle', 'elegant', 'diplomatic']} ] # Traditional festivals with cultural significance self.traditional_festivals = { 'spring_festival': {'name': '春节', 'significance': 'New Year celebration'}, 'qingming': {'name': '清明节', 'significance': 'Tomb sweeping day'}, 'mid_autumn': {'name': '中秋节', 'significance': 'Moon festival'}, 'dragon_boat': {'name': '端午节', 'significance': 'Dragon boat festival'} } # Five elements (Wu Xing) theory for fortune analysis self.five_elements = { 'wood': {'chinese': '木', 'color': 'green', 'season': 'spring'}, 'fire': {'chinese': '火', 'color': 'red', 'season': 'summer'}, 'earth': {'chinese': '土', 'color': 'yellow', 'season': 'late_summer'}, 'metal': {'chinese': '金', 'color': 'white', 'season': 'autumn'}, 'water': {'chinese': '水', 'color': 'black', 'season': 'winter'} } def calculate_lunar_date(self, gregorian_date: datetime.date) -> Dict: """ Convert Gregorian date to Chinese lunar calendar with cultural context. Includes zodiac year, month, day and traditional significance. Args: gregorian_date: Standard Gregorian calendar date Returns: Dictionary containing lunar date information and cultural significance """ # Step 1: Calculate lunar year and zodiac animal lunar_year = self._calculate_lunar_year(gregorian_date) zodiac_index = (lunar_year - 4) % 12 # Traditional calculation zodiac_animal = self.zodiac_animals[zodiac_index] # Step 2: Calculate lunar month and day lunar_month, lunar_day = self._calculate_lunar_month_day(gregorian_date) # Step 3: Determine five element for the year year_element = self._calculate_year_element(lunar_year) # Step 4: Check for traditional festivals festivals = self._check_traditional_festivals(lunar_month, lunar_day) # Step 5: Generate cultural insights cultural_guidance = await self._generate_cultural_guidance( zodiac_animal, year_element, lunar_month, lunar_day, festivals ) return { 'gregorian_date': gregorian_date.strftime('%Y-%m-%d'), 'lunar_year': lunar_year, 'lunar_month': lunar_month, 'lunar_day': lunar_day, 'zodiac_animal': zodiac_animal, 'year_element': year_element, 'festivals': festivals, 'cultural_guidance': cultural_guidance, 'traditional_display': f"{zodiac_animal['name']}年 {lunar_month}月 {lunar_day}日" } def _calculate_lunar_year(self, date: datetime.date) -> int: """ Calculate Chinese lunar year using traditional astronomical methods. Accounts for lunar new year timing differences from Gregorian calendar. """ # Simplified lunar year calculation - real implementation uses complex astronomy base_year = 1900 # Reference year for calculations # Approximate lunar new year dates (varies annually) lunar_new_year_approx = datetime.date(date.year, 2, 1) if date < lunar_new_year_approx: lunar_year = date.year - 1 # Still previous lunar year else: lunar_year = date.year return lunar_year def _calculate_year_element(self, lunar_year: int) -> Dict: """ Calculate the five element (Wu Xing) for the given lunar year. Follows traditional 10-year element cycle combined with zodiac. """ # Traditional five element cycle calculation element_cycle = ['wood', 'fire', 'earth', 'metal', 'water'] element_index = ((lunar_year - 4) // 2) % 5 element_name = element_cycle[element_index] return self.five_elements[element_name] async _generate_cultural_guidance( self, zodiac: Dict, element: Dict, month: int, day: int, festivals: List[Dict] ) -> Dict: """ Generate culturally authentic guidance based on traditional Chinese wisdom. Combines zodiac traits, five element theory, and seasonal advice. """ guidance_prompt = f""" Provide traditional Chinese cultural guidance for today based on: Zodiac Animal: {zodiac['english']} ({zodiac['name']}) Animal Traits: {', '.join(zodiac['traits'])} Year Element: {element['chinese']} ({list(element.keys())[0].title()}) Element Season: {element['season']} Lunar Month: {month} Lunar Day: {day} Festivals Today: {[f['name'] for f in festivals] if festivals else 'None'} Provide guidance in these areas: 1. 今日吉凶 (Today's Fortune): Auspicious and inauspicious activities 2. 健康建议 (Health Advice): Wellness tips based on seasonal energy 3. 人际关系 (Relationships): Social harmony and communication guidance 4. 事业财运 (Career & Wealth): Professional and financial insights 5. 传统智慧 (Traditional Wisdom): Relevant proverbs or ancient sayings Keep advice authentic to traditional Chinese culture and philosophy. Include both Chinese and English for cultural education. """ response = await self.cultural_ai.generate_content_async(guidance_prompt) return { 'daily_guidance': response.text, 'zodiac_compatibility': await self._calculate_zodiac_compatibility(zodiac), 'seasonal_advice': await self._generate_seasonal_advice(element, month), 'festival_significance': self._explain_festival_significance(festivals) }

🎋 Advanced Cultural Intelligence Engine

The cultural intelligence system provides authentic traditional wisdom, festival explanations, and personalized guidance based on Chinese philosophical principles:

📄 cultural_intelligence.py
class CulturalIntelligenceEngine: async _calculate_zodiac_compatibility(self, user_zodiac: Dict) -> Dict: """ Calculate traditional zodiac compatibility for relationships and partnerships. Based on ancient Chinese zodiac harmony and conflict theories. """ # Traditional zodiac compatibility matrix compatibility_matrix = { 'Rat': {'best': ['Dragon', 'Monkey'], 'avoid': ['Horse', 'Rabbit']}, 'Ox': {'best': ['Snake', 'Rooster'], 'avoid': ['Sheep', 'Horse']}, 'Tiger': {'best': ['Horse', 'Dog'], 'avoid': ['Monkey', 'Snake']}, 'Rabbit': {'best': ['Sheep', 'Pig'], 'avoid': ['Rooster', 'Rat']} } user_animal = user_zodiac['english'] compatibility = compatibility_matrix.get(user_animal, {'best': [], 'avoid': []}) return { 'user_zodiac': user_animal, 'most_compatible': compatibility['best'], 'least_compatible': compatibility['avoid'], 'relationship_advice': await self._generate_relationship_advice(user_animal, compatibility) } async _generate_seasonal_advice(self, element: Dict, lunar_month: int) -> Dict: """ Generate seasonal wellness and lifestyle advice based on traditional Chinese medicine and five element theory. Provides holistic guidance for mind, body, and spirit. """ seasonal_prompt = f""" Provide traditional Chinese seasonal advice based on: Dominant Element: {element['chinese']} ({list(element.keys())[0].title()}) Element Season: {element['season']} Element Color: {element['color']} Lunar Month: {lunar_month} Generate advice for: 1. 饮食养生 (Dietary Therapy): Foods that harmonize with current energy 2. 运动保健 (Exercise & Health): Physical activities that balance elements 3. 情绪调节 (Emotional Balance): Mental wellness practices 4. 生活作息 (Daily Routine): Optimal timing for activities 5. 五行调和 (Five Element Harmony): How to balance elemental energies Base advice on traditional Chinese medicine principles and seasonal energy flow. Include specific, actionable recommendations. """ response = await self.cultural_ai.generate_content_async(seasonal_prompt) return { 'seasonal_guidance': response.text, 'element_focus': element, 'recommended_colors': self._get_element_colors(element), 'energy_balance': self._calculate_energy_balance(element, lunar_month) } def _explain_festival_significance(self, festivals: List[Dict]) -> List[Dict]: """ Provide detailed explanations of traditional festivals and their cultural significance. Includes historical context, traditional customs, and modern celebrations. """ detailed_festivals = [] for festival in festivals: festival_key = festival['key'] if festival_key == 'spring_festival': detailed_festivals.append({ 'name': '春节 (Spring Festival)', 'significance': 'Chinese New Year - most important traditional holiday', 'customs': ['Family reunions', 'Red envelopes (hongbao)', 'Fireworks', 'Dragon dances'], 'traditional_foods': ['Dumplings', 'Fish', 'Rice cakes'], 'spiritual_meaning': 'Renewal, family unity, driving away evil spirits' }) elif festival_key == 'mid_autumn': detailed_festivals.append({ 'name': '中秋节 (Mid-Autumn Festival)', 'significance': 'Moon festival celebrating family unity and harvest', 'customs': ['Moon gazing', 'Lantern displays', 'Family gatherings'], 'traditional_foods': ['Mooncakes', 'Osmanthus wine', 'Pomelos'], 'spiritual_meaning': 'Completeness, reunion, gratitude for abundance' }) return detailed_festivals def _calculate_energy_balance(self, element: Dict, lunar_month: int) -> Dict: """ Calculate the balance of five elements for optimal energy flow. Provides recommendations for harmonizing personal energy with seasonal cycles. """ # Seasonal element dominance patterns seasonal_dominance = { 1: 'water', 2: 'water', 3: 'wood', 4: 'wood', 5: 'wood', 6: 'fire', 7: 'fire', 8: 'earth', 9: 'metal', 10: 'metal', 11: 'water', 12: 'water' } dominant_element = seasonal_dominance.get(lunar_month, 'earth') # Calculate element relationships for balance element_relationships = self._calculate_element_interactions(element, dominant_element) return { 'dominant_seasonal_element': dominant_element, 'personal_element': element, 'harmony_level': element_relationships['harmony_score'], 'balance_recommendations': element_relationships['recommendations'], 'energy_flow': element_relationships['energy_direction'] }

⚙️ Technical Implementation Notes

Key Algorithms & Innovations

Why This Approach Works