@@ -51,14 +51,11 @@ def extract_answers(cls, values) -> dict:
5151 if answer .question_text == SpeakerQuestion .homepage :
5252 values ["homepage" ] = answer .answer_text
5353
54- if answer .question_text == SpeakerQuestion .twitter :
55- values ["twitter_url" ] = cls .extract_twitter_url (answer .answer_text )
56-
57- if answer .question_text == SpeakerQuestion .mastodon :
58- values ["mastodon_url" ] = cls .extract_mastodon_url (answer .answer_text )
59-
60- if answer .question_text == SpeakerQuestion .bluesky :
61- values ["bluesky_url" ] = cls .extract_bluesky_url (answer .answer_text )
54+ if answer .question_text == SpeakerQuestion .twitter_mastodon :
55+ if extracted := cls .extract_twitter_url (answer .answer_text ):
56+ values ["twitter_url" ] = extracted
57+ elif extracted := cls .extract_mastodon_url (answer .answer_text ):
58+ values ["mastodon_url" ] = extracted
6259
6360 if answer .question_text == SpeakerQuestion .linkedin :
6461 values ["linkedin_url" ] = cls .extract_linkedin_url (answer .answer_text )
@@ -164,41 +161,6 @@ def extract_linkedin_url(text: str) -> str | None:
164161
165162 return linkedin_url
166163
167- @staticmethod
168- def extract_bluesky_url (text : str ) -> str | None :
169- """
170- Extracts a Bluesky profile URL from the given text.
171- Cleans the input and handles formats like:
172- - username
173- - bsky.app/profile/username
174- - bsky/username
175- - username.dev
176- - @username
177- - username.bsky.social
178- """
179- cleaned = EuroPythonSpeaker ._clean_social_input (text )
180- if cleaned is None :
181- print (f"Invalid Bluesky URL: { text } " )
182- return None
183-
184- for marker in ("bsky.app/profile/" , "bsky/" ):
185- if marker in cleaned :
186- cleaned = cleaned .split (marker , 1 )[1 ]
187- break
188- else :
189- cleaned = cleaned .rsplit ("/" , 1 )[- 1 ]
190-
191- if "." not in cleaned :
192- cleaned += ".bsky.social"
193-
194- bluesky_url = f"https://bsky.app/profile/{ cleaned } "
195-
196- if not re .match (r"^https://bsky\.app/profile/[\w\.-]+\.[\w\.-]+$" , bluesky_url ):
197- print (f"Invalid Bluesky URL: { bluesky_url } " )
198- return None
199-
200- return bluesky_url
201-
202164 @staticmethod
203165 def extract_gitx_url (text : str ) -> str | None :
204166 """
0 commit comments