@@ -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
145155def to_prague_tz (dt : datetime ) -> datetime :
0 commit comments