Skip to content

Commit baa4ed5

Browse files
committed
Gracefully skip errors having to do with dead links in iframes
1 parent 52c93b8 commit baa4ed5

1 file changed

Lines changed: 17 additions & 14 deletions

File tree

xword_dl/xword_dl.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -99,19 +99,22 @@ def parse_for_embedded_puzzle(url, **kwargs):
9999

100100
return dl, puzzle_url
101101

102-
if not soup:
103-
res = requests.get(src)
104-
soup = BeautifulSoup(res.text, 'lxml')
105-
106-
for script in [s for s in soup.find_all('script') if s.get('src')]:
107-
js_url = urllib.parse.urljoin(url, script.get('src'))
108-
res = requests.get(js_url, headers={'User-Agent':'xword-dl'})
109-
if res.text.startswith('var CrosswordPuzzleData'):
110-
dl = downloader.CrosswordCompilerDownloader(url=url, **kwargs)
111-
puzzle_url = js_url
112-
dl.fetch_data = dl.fetch_jsencoded_data
113-
114-
return dl, puzzle_url
102+
try:
103+
if not soup:
104+
res = requests.get(src)
105+
soup = BeautifulSoup(res.text, 'lxml')
106+
107+
for script in [s for s in soup.find_all('script') if s.get('src')]:
108+
js_url = urllib.parse.urljoin(url, script.get('src'))
109+
res = requests.get(js_url, headers={'User-Agent':'xword-dl'})
110+
if res.text.startswith('var CrosswordPuzzleData'):
111+
dl = downloader.CrosswordCompilerDownloader(url=url, **kwargs)
112+
puzzle_url = js_url
113+
dl.fetch_data = dl.fetch_jsencoded_data
114+
115+
return dl, puzzle_url
116+
except Exception as e:
117+
# print(f"Error processing {src}: {e}")
115118

116119
soup = None
117120

@@ -121,7 +124,7 @@ def parse_for_embedded_puzzle(url, **kwargs):
121124
def get_supported_outlets(command_only=True):
122125
all_classes = inspect.getmembers(sys.modules['xword_dl.downloader'],
123126
inspect.isclass)
124-
dls = [d for d in all_classes if issubclass(d[1],
127+
dls = [d for d in all_classes if issubclass(d[1],
125128
downloader.BaseDownloader)]
126129

127130
if command_only:

0 commit comments

Comments
 (0)