MCPcopy Create free account
hub / github.com/Freedium-cfd/web / resolve_medium_url

Function resolve_medium_url

medium-parser/medium_parser/utils.py:259–356  ·  view source on GitHub ↗
(url: str, timeout: int = 5)

Source from the content-addressed store, hash-verified

257
258@alru_cache(maxsize=500)
259async def resolve_medium_url(url: str, timeout: int = 5) -> str:
260 logger.debug(f"Trying resolve {url=}, with {timeout=}")
261 parsed_url = urlparse(url)
262 parsed_netloc = un_wwwify(parsed_url.netloc)
263
264 if parsed_url.path.startswith("/p/"):
265 logger.debug("URL is Medium 'mobile' link")
266 post_id = parsed_url.path.rsplit("/p/")[1]
267
268 elif parsed_netloc == "l.facebook.com" and parsed_url.path.startswith("/l.php"):
269 logger.debug("URL seems like is Facebook redirect (tracking) link")
270
271 parsed_query = parse_qs(parsed_url.query)
272 if parsed_query.get("u") and len(parsed_query["u"]) == 1:
273 post_url = parsed_query["u"][0]
274 return await resolve_medium_url(post_url)
275
276 logger.debug("...but we get fucked up...")
277 return False
278
279 elif (
280 parsed_netloc == "webcache.googleusercontent.com"
281 and parsed_url.path.startswith("/search")
282 ):
283 logger.debug("URL seems like is Google Web Archive page link")
284
285 parsed_query = parse_qs(parsed_url.query)
286 if parsed_query.get("q") and len(parsed_query["q"]) == 1:
287 post_url = parsed_query["q"][0].removeprefix("cache:")
288 return await resolve_medium_url(post_url)
289
290 logger.debug("...but we get fucked up...")
291 return False
292
293 elif parsed_netloc == "google.com" and parsed_url.path.startswith("/url"):
294 logger.debug("URL seems like is Google redirect (tracking) link")
295
296 parsed_query = parse_qs(parsed_url.query)
297 if parsed_query.get("url") and len(parsed_query["url"]) == 1:
298 logger.debug("..and we got 'url' passed param. Make resolve them....")
299 post_url = parsed_query["url"][0]
300 return await resolve_medium_url(post_url)
301 elif parsed_query.get("q") and len(parsed_query["q"]) == 1:
302 logger.debug("..and we got 'q' passed param. Make resolve them....")
303 post_url = parsed_query["q"][0]
304 return await resolve_medium_url(post_url)
305
306 logger.debug("...but we get fucked up...")
307 return False
308
309 elif parsed_netloc == "12ft.io":
310 logger.debug("URL seems like is from our partner named 12ft.io")
311
312 parsed_query = parse_qs(parsed_url.query)
313 if parsed_query.get("q") and len(parsed_query["q"]) == 1:
314 logger.debug("..and we got 'q' passed param. Make resolve them....")
315 post_url = parsed_query["q"][0]
316 return await resolve_medium_url(post_url)

Callers 2

resolve_urlMethod · 0.85
is_valid_medium_urlFunction · 0.85

Calls 4

un_wwwifyFunction · 0.85
getMethod · 0.45

Tested by

no test coverage detected