11import asyncio
2+ from urllib .parse import urlparse
23
34import httpx
45from async_lru import alru_cache
1213]
1314
1415
16+ def match_hostname (url : str , hostname : str ) -> bool :
17+ """
18+ Checks if the hostname extracted from a URL matches a given hostname string.
19+ """
20+ parsed_url = urlparse (url )
21+ return parsed_url .hostname == hostname
22+
23+
1524class StremioService :
1625 """Service for interacting with Stremio API to fetch user library."""
1726
@@ -340,7 +349,9 @@ async def update_catalogs(self, catalogs: list[dict], auth_key: str | None = Non
340349 logger .info (f"Found { len (addons )} addons" )
341350 # find addon with id "com.watchly"
342351 for addon in addons :
343- if addon .get ("manifest" , {}).get ("id" ) == settings .ADDON_ID :
352+ if addon .get ("manifest" , {}).get ("id" ) == settings .ADDON_ID and match_hostname (
353+ addon .get ("transportUrl" ), settings .HOST_NAME
354+ ):
344355 logger .info (f"Found addon with id { settings .ADDON_ID } " )
345356 addon ["manifest" ]["catalogs" ] = catalogs
346357 break
@@ -350,6 +361,8 @@ async def is_addon_installed(self, auth_key: str | None = None):
350361 auth_key = auth_key or await self .get_auth_key ()
351362 addons = await self .get_addons (auth_key )
352363 for addon in addons :
353- if addon .get ("manifest" , {}).get ("id" ) == settings .ADDON_ID :
364+ if addon .get ("manifest" , {}).get ("id" ) == settings .ADDON_ID and match_hostname (
365+ addon .get ("transportUrl" ), settings .HOST_NAME
366+ ):
354367 return True
355368 return False
0 commit comments