Skip to content

Commit a3dfadc

Browse files
author
himanshu
committed
bug fix in retry and max_results
1 parent 846b8c0 commit a3dfadc

2 files changed

Lines changed: 26 additions & 9 deletions

File tree

newsdataapi/newsdataapi_client.py

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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}')

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
setup(
88
name='newsdataapi',
9-
version='0.1.13',
9+
version='0.1.14',
1010
packages=['newsdataapi'],
1111
description='Python library for newsdata client-API Call',
1212
long_description=long_description,

0 commit comments

Comments
 (0)