322 lines
8.8 KiB
Python
Executable File
322 lines
8.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Greeting Generator Script
|
|
|
|
Generate contextual greetings in multiple languages and styles.
|
|
|
|
Usage:
|
|
python greet.py --language chinese --style formal
|
|
python greet.py --style casual --time morning
|
|
python greet.py --language spanish --context business
|
|
"""
|
|
|
|
import argparse
|
|
import sys
|
|
from datetime import datetime
|
|
from typing import Dict, List, Tuple
|
|
|
|
|
|
class GreetingGenerator:
|
|
"""Generate greetings based on language, style, context, and time."""
|
|
|
|
GREETINGS: Dict[str, Dict[str, List[str]]] = {
|
|
"english": {
|
|
"formal": [
|
|
"Good day",
|
|
"Greetings",
|
|
"I hope this message finds you well"
|
|
],
|
|
"casual": [
|
|
"Hey",
|
|
"Hi there",
|
|
"Hello",
|
|
"What's up"
|
|
],
|
|
"professional": [
|
|
"Good morning/afternoon",
|
|
"Hello",
|
|
"Dear [Name]"
|
|
]
|
|
},
|
|
"chinese": {
|
|
"formal": [
|
|
"您好 (nín hǎo)",
|
|
"尊敬的 [Name] (zūn jìng de)",
|
|
"很高兴见到您 (hěn gāo xìng jiàn dào nín)"
|
|
],
|
|
"casual": [
|
|
"你好 (nǐ hǎo)",
|
|
"嗨 (hāi)",
|
|
"哈喽 (hā lou)"
|
|
],
|
|
"professional": [
|
|
"您好 (nín hǎo)",
|
|
"早上好 (zǎo shang hǎo)",
|
|
"下午好 (xià wǔ hǎo)"
|
|
]
|
|
},
|
|
"spanish": {
|
|
"formal": [
|
|
"Buenos días (bweh-nos DEE-ahs)",
|
|
"Estimado/a [Name]",
|
|
"Es un placer conocerle"
|
|
],
|
|
"casual": [
|
|
"¡Hola! (OH-lah)",
|
|
"¿Qué tal?",
|
|
"¡Buenas!"
|
|
],
|
|
"professional": [
|
|
"Buenos días",
|
|
"Buenas tardes",
|
|
"Hola, [Name]"
|
|
]
|
|
},
|
|
"japanese": {
|
|
"formal": [
|
|
"おはようございます (ohayō gozaimasu)",
|
|
"こんにちは (konnichiwa)",
|
|
"お会いできて光栄です (o-ai dekite kōei desu)"
|
|
],
|
|
"casual": [
|
|
"やあ (yā)",
|
|
"おっす (ossu)",
|
|
"こんちは (konchiwa)"
|
|
],
|
|
"professional": [
|
|
"おはようございます (ohayō gozaimasu)",
|
|
"こんにちは (konnichiwa)",
|
|
"[Name]さん、お疲れ様です"
|
|
]
|
|
},
|
|
"french": {
|
|
"formal": [
|
|
"Bonjour (bon-ZHOOR)",
|
|
"Enchanté(e)",
|
|
"Ravi(e) de vous rencontrer"
|
|
],
|
|
"casual": [
|
|
"Salut (sa-LOO)",
|
|
"Coucou",
|
|
"Ça va?"
|
|
],
|
|
"professional": [
|
|
"Bonjour",
|
|
"Bonsoir",
|
|
"Madame/Monsieur [Name]"
|
|
]
|
|
}
|
|
}
|
|
|
|
TIME_GREETINGS: Dict[str, Dict[str, str]] = {
|
|
"morning": {
|
|
"english": "Good morning",
|
|
"chinese": "早上好 (zǎo shang hǎo)",
|
|
"spanish": "Buenos días",
|
|
"japanese": "おはようございます (ohayō gozaimasu)",
|
|
"french": "Bonjour"
|
|
},
|
|
"afternoon": {
|
|
"english": "Good afternoon",
|
|
"chinese": "下午好 (xià wǔ hǎo)",
|
|
"spanish": "Buenas tardes",
|
|
"japanese": "こんにちは (konnichiwa)",
|
|
"french": "Bon après-midi"
|
|
},
|
|
"evening": {
|
|
"english": "Good evening",
|
|
"chinese": "晚上好 (wǎn shang hǎo)",
|
|
"spanish": "Buenas noches",
|
|
"japanese": "こんばんは (konbanwa)",
|
|
"french": "Bonsoir"
|
|
},
|
|
"night": {
|
|
"english": "Good night",
|
|
"chinese": "晚安 (wǎn ān)",
|
|
"spanish": "Buenas noches",
|
|
"japanese": "おやすみなさい (oyasuminasai)",
|
|
"french": "Bonne nuit"
|
|
}
|
|
}
|
|
|
|
CONTEXT_TEMPLATES: Dict[str, str] = {
|
|
"business": """Dear [Name],
|
|
|
|
{greeting}
|
|
|
|
I hope this message finds you well. I am reaching out to discuss...
|
|
|
|
Best regards,
|
|
[Your Name]""",
|
|
|
|
"email": """Hello [Name],
|
|
|
|
{greeting}
|
|
|
|
I wanted to reach out regarding...
|
|
|
|
Kind regards,
|
|
[Your Name]""",
|
|
|
|
"social": """{greeting}
|
|
|
|
Great to connect with you!
|
|
|
|
Cheers,
|
|
[Your Name]""",
|
|
|
|
"meeting": """{greeting}
|
|
|
|
Thank you for taking the time to meet with me today.
|
|
|
|
Looking forward to our discussion.
|
|
|
|
Best,
|
|
[Your Name]"""
|
|
}
|
|
|
|
def __init__(self):
|
|
self.current_hour = datetime.now().hour
|
|
|
|
def get_auto_time(self) -> str:
|
|
"""Automatically determine time of day based on current hour."""
|
|
if 5 <= self.current_hour < 12:
|
|
return "morning"
|
|
elif 12 <= self.current_hour < 17:
|
|
return "afternoon"
|
|
elif 17 <= self.current_hour < 21:
|
|
return "evening"
|
|
else:
|
|
return "night"
|
|
|
|
def generate(
|
|
self,
|
|
language: str = "english",
|
|
style: str = "casual",
|
|
context: str = None,
|
|
time: str = None
|
|
) -> str:
|
|
"""
|
|
Generate a greeting based on parameters.
|
|
|
|
Args:
|
|
language: Target language
|
|
style: Formality level (formal/casual/professional)
|
|
context: Specific context (business/email/social/meeting)
|
|
time: Time of day (morning/afternoon/evening/night)
|
|
|
|
Returns:
|
|
Generated greeting string
|
|
"""
|
|
language = language.lower()
|
|
style = style.lower()
|
|
|
|
# Validate inputs
|
|
if language not in self.GREETINGS:
|
|
available = ", ".join(self.GREETINGS.keys())
|
|
return f"Error: Language '{language}' not supported. Available: {available}"
|
|
|
|
if style not in self.GREETINGS[language]:
|
|
available = ", ".join(self.GREETINGS[language].keys())
|
|
return f"Error: Style '{style}' not available. Available: {available}"
|
|
|
|
# Generate greeting based on time if specified
|
|
if time:
|
|
time = time.lower()
|
|
if time in self.TIME_GREETINGS:
|
|
greeting = self.TIME_GREETINGS[time].get(language, "Hello")
|
|
else:
|
|
greeting = self.GREETINGS[language][style][0]
|
|
else:
|
|
# Use first greeting from the style list
|
|
greeting = self.GREETINGS[language][style][0]
|
|
|
|
# Apply context template if specified
|
|
if context and context.lower() in self.CONTEXT_TEMPLATES:
|
|
template = self.CONTEXT_TEMPLATES[context.lower()]
|
|
return template.format(greeting=greeting)
|
|
|
|
return greeting
|
|
|
|
def list_options(self) -> str:
|
|
"""List all available languages, styles, and contexts."""
|
|
output = []
|
|
output.append("Available Languages:")
|
|
for lang in self.GREETINGS.keys():
|
|
output.append(f" - {lang}")
|
|
|
|
output.append("\nAvailable Styles:")
|
|
output.append(" - formal")
|
|
output.append(" - casual")
|
|
output.append(" - professional")
|
|
|
|
output.append("\nAvailable Contexts:")
|
|
for ctx in self.CONTEXT_TEMPLATES.keys():
|
|
output.append(f" - {ctx}")
|
|
|
|
output.append("\nAvailable Times:")
|
|
for t in self.TIME_GREETINGS.keys():
|
|
output.append(f" - {t}")
|
|
|
|
return "\n".join(output)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
description="Generate contextual greetings in multiple languages",
|
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
epilog="""
|
|
Examples:
|
|
python greet.py --language chinese --style formal
|
|
python greet.py --style casual --time morning
|
|
python greet.py --language spanish --context business
|
|
python greet.py --list
|
|
"""
|
|
)
|
|
|
|
parser.add_argument(
|
|
"--language",
|
|
default="english",
|
|
help="Target language (default: english)"
|
|
)
|
|
parser.add_argument(
|
|
"--style",
|
|
default="casual",
|
|
help="Formality level: formal, casual, professional (default: casual)"
|
|
)
|
|
parser.add_argument(
|
|
"--context",
|
|
help="Specific context: business, email, social, meeting"
|
|
)
|
|
parser.add_argument(
|
|
"--time",
|
|
help="Time of day: morning, afternoon, evening, night"
|
|
)
|
|
parser.add_argument(
|
|
"--list",
|
|
action="store_true",
|
|
help="List all available options"
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
|
|
generator = GreetingGenerator()
|
|
|
|
if args.list:
|
|
print(generator.list_options())
|
|
return 0
|
|
|
|
greeting = generator.generate(
|
|
language=args.language,
|
|
style=args.style,
|
|
context=args.context,
|
|
time=args.time
|
|
)
|
|
|
|
print(greeting)
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|