-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathevents_database.py
63 lines (52 loc) · 2.1 KB
/
events_database.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
from datetime import datetime
from data_sources import HistoricalDataCollector
# This is a simple example - you might want to use a proper database
HISTORICAL_EVENTS = [
{
"month": 4,
"day": 10,
"year": 1925,
"description": "The Great Gatsby was published by Charles Scribner's Sons."
},
# Add more events here
]
class EventsDatabase:
def __init__(self):
self.collector = HistoricalDataCollector()
def get_todays_events(self, month, day):
"""
Retrieve historical events for a specific month and day from multiple sources
"""
all_events = []
# Collect events from all sources
wiki_events = self.collector.get_wikipedia_events(month, day)
history_events = self.collector.get_history_dot_com_events(month, day)
calendar_events = self.collector.get_calendarific_events(month, day)
# Combine all events
all_events.extend(wiki_events)
all_events.extend(history_events)
all_events.extend(calendar_events)
# Remove duplicates and sort by year
unique_events = self._remove_duplicates(all_events)
sorted_events = sorted(unique_events, key=lambda x: x['year'])
return sorted_events
def _remove_duplicates(self, events):
"""
Remove duplicate events based on year and similar descriptions
"""
seen = set()
unique_events = []
for event in events:
# Create a key from year and first 50 chars of description
key = (event['year'], event['description'][:50])
if key not in seen:
seen.add(key)
unique_events.append(event)
return unique_events
def create_tweet(self, event):
tweet_text = f"On this day in {event['year']}, {event['description']} (via {event['source']})"
try:
self.client.create_tweet(text=tweet_text)
print(f"Successfully tweeted: {tweet_text}")
except Exception as e:
print(f"Error posting tweet: {e}")