@@ -12,6 +12,8 @@ class DiscoveryEngine:
1212
1313 def __init__ (self ):
1414 self .tmdb_service = TMDBService ()
15+ # Limit concurrent discovery calls to avoid rate limiting
16+ self ._sem = asyncio .Semaphore (10 )
1517
1618 async def discover_recommendations (
1719 self ,
@@ -63,7 +65,7 @@ async def discover_recommendations(
6365 for i in range (2 ):
6466 params_rating = {
6567 "with_genres" : genre_ids ,
66- "sort_by" : "ratings .desc" ,
68+ "sort_by" : "vote_average .desc" ,
6769 "vote_count.gte" : 500 ,
6870 "page" : i + 1 ,
6971 ** base_params ,
@@ -85,7 +87,7 @@ async def discover_recommendations(
8587 for i in range (3 ):
8688 params_rating = {
8789 "with_keywords" : keyword_ids ,
88- "sort_by" : "ratings .desc" ,
90+ "sort_by" : "vote_average .desc" ,
8991 "vote_count.gte" : 500 ,
9092 "page" : i + 1 ,
9193 ** base_params ,
@@ -105,7 +107,7 @@ async def discover_recommendations(
105107
106108 params_rating = {
107109 "with_cast" : str (actor_id ),
108- "sort_by" : "ratings .desc" ,
110+ "sort_by" : "vote_average .desc" ,
109111 "vote_count.gte" : 500 ,
110112 ** base_params ,
111113 }
@@ -124,7 +126,7 @@ async def discover_recommendations(
124126
125127 params_rating = {
126128 "with_crew" : str (director_id ),
127- "sort_by" : "ratings .desc" ,
129+ "sort_by" : "vote_average .desc" ,
128130 "vote_count.gte" : 500 ,
129131 ** base_params ,
130132 }
@@ -143,7 +145,7 @@ async def discover_recommendations(
143145
144146 params_rating = {
145147 "with_origin_country" : country_ids ,
146- "sort_by" : "ratings .desc" ,
148+ "sort_by" : "vote_average .desc" ,
147149 "vote_count.gte" : 300 ,
148150 ** base_params ,
149151 }
@@ -154,11 +156,11 @@ async def discover_recommendations(
154156 year = top_year [0 ][0 ]
155157 # we store year in 10 years bucket
156158 start_year = f"{ year } -01-01"
157- end_year = f"{ int (year ) + 10 } -12-31"
159+ end_year = f"{ int (year ) + 9 } -12-31"
158160 params_rating = {
159161 "primary_release_date.gte" : start_year ,
160162 "primary_release_date.lte" : end_year ,
161- "sort_by" : "ratings .desc" ,
163+ "sort_by" : "vote_average .desc" ,
162164 "vote_count.gte" : 500 ,
163165 ** base_params ,
164166 }
@@ -181,7 +183,8 @@ async def discover_recommendations(
181183 async def _fetch_discovery (self , media_type : str , params : dict ) -> list [dict ]:
182184 """Helper to call TMDB discovery."""
183185 try :
184- data = await self .tmdb_service .get_discover (media_type , ** params )
185- return data .get ("results" , [])
186+ async with self ._sem :
187+ data = await self .tmdb_service .get_discover (media_type , ** params )
188+ return data .get ("results" , [])
186189 except Exception :
187190 return []
0 commit comments