Skip to content

Commit 85c3feb

Browse files
committed
fix events
1 parent 40b4bba commit 85c3feb

File tree

4 files changed

+26
-16
lines changed

4 files changed

+26
-16
lines changed

Diff for: events_feeds.yml

+2-2
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

Diff for: hooks/events.py

+18-8
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:

Diff for: poetry.lock

+5-5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ mkdocs-material = "9.5.39"
1313
strictyaml = "1.7.3"
1414
ics = {version = "0.8.0.dev0", allow-prereleases = true}
1515
requests = "2.32.3"
16-
teemup = "1.1.0"
1716
mkdocs = "1.6.1"
17+
teemup = "1.1.1"
1818

1919
[tool.poetry.group.dev.dependencies]
2020
pytest = "8.3.2"

0 commit comments

Comments
 (0)