@@ -15,6 +15,7 @@ def __init__(
1515 self .apikey = apikey
1616 self .request_method :requests = requests if session == False else requests .Session ()
1717 self .max_result = max_result
18+ self .max_result_scroll = max_result
1819 self .max_retries = max_retries
1920 self .retry_delay = retry_delay
2021 self .proxies = proxies
@@ -92,13 +93,16 @@ def __get_feeds(self,url:str)-> dict:
9293 self .recursive_retry = self .max_retries
9394 return feeds_data
9495 except requests .exceptions .ConnectionError :
96+ if self .is_debug == True :
97+ print (f"Debug | { datetime .now (tz = timezone .utc ).replace (microsecond = 0 )} | Encountered 'ConnectionError' going to sleep for: { self .retry_delay } seconds." )
98+ time .sleep (self .retry_delay )
9599 if isinstance (self .request_method ,requests .Session ):
96100 self .request_method = requests .Session ()
97101 self .recursive_retry -= 1
98102 return self .__get_feeds (url = url )
99103
100104 def __get_feeds_all (self ,url :str )-> dict :
101- if not isinstance (self .max_result ,int ):
105+ if not isinstance (self .max_result_scroll ,int ):
102106 raise TypeError ('max_result should be of type int.' )
103107
104108 if not isinstance (self .request_method ,requests .Session ):
@@ -113,11 +117,17 @@ def __get_feeds_all(self,url:str)-> dict:
113117 data ['results' ].extend (results )
114118 data ['nextPage' ] = response .get ('nextPage' )
115119 feeds_count += len (results )
116- if feeds_count >= self .max_result :
120+ if feeds_count >= self .max_result_scroll :
117121 return data
118122 time .sleep (0.5 )
119123 return data
120124
125+ def _reset_recursive_retry (self ):
126+ self .recursive_retry = self .max_retries
127+
128+ def _reset_max_result (self ):
129+ self .max_result_scroll = self .max_result
130+
121131 def news_api (
122132 self , q :Optional [str ]= None , qInTitle :Optional [str ]= None , country :Optional [Union [str , list ]]= None , category :Optional [Union [str , list ]]= None ,
123133 language :Optional [Union [str , list ]]= None , domain :Optional [Union [str , list ]]= None , timeframe :Optional [Union [int ,str ]]= None , size :Optional [int ]= None ,
@@ -135,7 +145,7 @@ def news_api(
135145 'size' :size ,'domainurl' :domainurl ,'excludedomain' :excludedomain ,'timezone' :timezone ,'full_content' :full_content ,'image' :image ,'video' :video ,'prioritydomain' :prioritydomain ,
136146 'page' :page ,'qInMeta' :qInMeta ,'tag' :tag , 'sentiment' :sentiment , 'region' :region
137147 }
138-
148+ self . _reset_recursive_retry ()
139149 URL_parameters = {}
140150 for key ,value in params .items ():
141151 if value is not None :
@@ -144,7 +154,9 @@ def news_api(
144154 URL_parameters_encoded = urlencode (URL_parameters , quote_via = quote )
145155 if scroll == True :
146156 if max_result :
147- self .max_result = max_result
157+ self .max_result_scroll = max_result
158+ else :
159+ self ._reset_max_result ()
148160 return self .__get_feeds_all (url = f'{ constants .NEWS_URL } ?{ URL_parameters_encoded } ' )
149161 else :
150162 return self .__get_feeds (url = f'{ constants .NEWS_URL } ?{ URL_parameters_encoded } ' )
@@ -165,6 +177,7 @@ def archive_api(
165177 'timezone' :timezone ,'full_content' :full_content ,'image' :image ,'video' :video ,'prioritydomain' :prioritydomain ,'page' :page ,'from_date' :from_date ,'to_date' :to_date ,
166178 'apikey' :self .apikey ,'qInMeta' :qInMeta ,'cryptofeeds' :cryptofeeds
167179 }
180+ self ._reset_recursive_retry ()
168181 URL_parameters = {}
169182 for key ,value in params .items ():
170183 if value is not None :
@@ -173,7 +186,9 @@ def archive_api(
173186 URL_parameters_encoded = urlencode (URL_parameters , quote_via = quote )
174187 if scroll == True :
175188 if max_result :
176- self .max_result = max_result
189+ self .max_result_scroll = max_result
190+ else :
191+ self ._reset_max_result ()
177192 return self .__get_feeds_all (url = f'{ constants .ARCHIVE_URL } ?{ URL_parameters_encoded } ' )
178193 else :
179194 return self .__get_feeds (url = f'{ constants .ARCHIVE_URL } ?{ URL_parameters_encoded } ' )
@@ -185,7 +200,7 @@ def sources_api( self, country:Optional[str]= None, category:Optional[str]= None
185200 """
186201 URL_parameters = {}
187202 params = {"apikey" :self .apikey , "country" :country , "category" :category , "language" :language , "prioritydomain" :prioritydomain }
188-
203+ self . _reset_recursive_retry ()
189204 URL_parameters = {}
190205 for key ,value in params .items ():
191206 if value is not None :
@@ -211,7 +226,7 @@ def crypto_api(
211226 'excludedomain' :excludedomain ,'timezone' :timezone ,'full_content' :full_content ,'image' :image ,'video' :video ,'prioritydomain' :prioritydomain ,'page' :page ,
212227 'timeframe' :str (timeframe ) if timeframe else timeframe ,'qInMeta' :qInMeta ,'tag' :tag , 'sentiment' :sentiment ,'coin' :coin
213228 }
214-
229+ self . _reset_recursive_retry ()
215230 URL_parameters = {}
216231 for key ,value in params .items ():
217232 if value is not None :
@@ -220,7 +235,9 @@ def crypto_api(
220235 URL_parameters_encoded = urlencode (URL_parameters , quote_via = quote )
221236 if scroll == True :
222237 if max_result :
223- self .max_result = max_result
238+ self .max_result_scroll = max_result
239+ else :
240+ self ._reset_max_result ()
224241 return self .__get_feeds_all (url = f'{ constants .CRYPTO_URL } ?{ URL_parameters_encoded } ' )
225242 else :
226243 return self .__get_feeds (url = f'{ constants .CRYPTO_URL } ?{ URL_parameters_encoded } ' )
0 commit comments