Skip to content

Commit d31f92c

Browse files
authored
Merge pull request #582 from pyvec/honzajavorek/fix-events
Fix events
2 parents 40b4bba + fc999a5 commit d31f92c

File tree

4 files changed

+214
-188
lines changed

4 files changed

+214
-188
lines changed

events_feeds.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
- name: PyWorking Sessions
1212
site_url: https://pyworking.cz/
1313
url: https://www.meetup.com/pyworking/events/
14-
format: json-dl
14+
format: meetupcom
1515

1616
- name: PyData Prague
1717
site_url: https://www.meetup.com/pydata-prague/
1818
url: https://www.meetup.com/pydata-prague/events/
19-
format: json-dl
19+
format: meetupcom
2020

2121
- name: Czech Python Events
2222
site_url: https://calendar.google.com/calendar/embed?src=kfdeelic1a13jsp7jvai861vfs%40group.calendar.google.com&ctz=Europe%2FPrague

hooks/events.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ def fetch_events(days_limit: int | None = None, past: bool = False) -> list[dict
5555
for event_data in parse_icalendar(feed["data"])
5656
]
5757
)
58-
elif feed["format"] == "json-dl":
58+
elif feed["format"] == "meetupcom":
5959
events.extend(
6060
[
6161
dict(feed=feed, **event_data)
62-
for event_data in parse_json_dl(feed["data"], feed["url"])
62+
for event_data in parse_meetupcom(feed["data"], feed["url"])
6363
]
6464
)
6565
else:
@@ -115,31 +115,41 @@ def parse_icalendar(text: str) -> list[dict]:
115115
starts_at=to_prague_tz(event.begin),
116116
ends_at=to_prague_tz(event.end) if event.end else None,
117117
location=event.location,
118-
url=event.url if event.url else find_first_url(event.description),
118+
url=event.url if event.url else find_first_url(event.description or ""),
119119
is_tentative="tentative-date" in event.categories,
120120
)
121121
for event in ics.Calendar(text).events
122122
]
123123

124124

125-
def parse_json_dl(html: str, base_url: str) -> list[dict]:
125+
def parse_meetupcom(html: str, base_url: str) -> list[dict]:
126126
response = requests.get(base_url)
127-
events = teemup.parse(response.text)
127+
events: list[teemup.Event] = teemup.parse(response.text)
128128
return [
129129
dict(
130130
name=event["title"],
131131
starts_at=event["starts_at"],
132132
ends_at=event["ends_at"],
133-
location=event["venue"],
133+
location=parse_meetupcom_venue(event["venue"]) if event["venue"] else None,
134134
url=event["url"],
135135
is_tentative=False,
136136
)
137137
for event in events
138138
]
139139

140140

141-
def parse_json_dl_location(location: dict[str, str]) -> str:
142-
return f"{location['name']}, {location['address']['streetAddress']}, {location['address']['addressLocality']}, {location['address']['addressCountry']}"
141+
def parse_meetupcom_venue(location: teemup.Venue) -> str:
142+
return ", ".join(
143+
filter(
144+
None,
145+
[
146+
location["name"],
147+
location["address"],
148+
location["city"],
149+
location["country"],
150+
],
151+
)
152+
)
143153

144154

145155
def to_prague_tz(dt: datetime) -> datetime:

0 commit comments

Comments
 (0)