Skip to content

Commit 65d815c

Browse files
authored
Merge pull request #12 from i30817/limiter
Limiter
2 parents cf5b1f5 + cb9e26f commit 65d815c

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "rhdndat"
3-
version = "2.7.9"
3+
version = "2.8.0"
44
description = "www.romhacking.net update checker"
55
authors = ["i30817 <i30817@gmail.com>"]
66
license = "GNU General Public License v3.0"

rhdndat/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '2.7.9'
1+
__version__ = '2.8.0'

rhdndat/__main__.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -621,8 +621,12 @@ def get_romhacking_data(possible_metadata, session):
621621
metadata = []
622622
language = None
623623
version_hacks = read_version_file(possible_metadata)
624-
625-
for (version, url) in version_hacks:
624+
#loop that can iterate on the same place with a continue without next
625+
sentinel = object()
626+
iterobj = iter(version_hacks)
627+
x = next(iterobj, sentinel)
628+
while x is not sentinel:
629+
(version, url) = x
626630
try:
627631
response = session.get(url, headers={'User-Agent': 'Mozilla/5.0'})
628632
page = response.text
@@ -668,7 +672,15 @@ def get_romhacking_data(possible_metadata, session):
668672

669673
if remote_version != version:
670674
warn(f'warn: local \'{version}\' {link(possible_metadata.parent.as_uri(),"(open dir)")} != remote \'{remote_version}\' {link(url, "(open url)")} versions')
675+
#advance loop, most exceptions exit the loop
676+
x = next(iterobj, sentinel)
671677
except (requests.exceptions.RequestException, AttributeError) as e:
678+
if response.status_code == 403:
679+
error("error: blocked by cloudflare (403 Forbidden)")
680+
elif response.status_code == 429:
681+
error("error: rate limited by cloudflare (429 Too Many Requests)")
682+
#doesnt advance the loop, returns to retry later (the session has a limiter already)
683+
continue
672684
raise VersionFileURLError(possible_metadata, url)
673685
return (metadata, language)
674686

0 commit comments

Comments
 (0)