(self)
| 317 | self.log_info(_("No errors found")) |
| 318 | |
| 319 | def check_errors(self): |
| 320 | self.log_info(_("Checking for link errors...")) |
| 321 | |
| 322 | if not self.data: |
| 323 | self.log_warning(_("No data to check")) |
| 324 | return |
| 325 | |
| 326 | if search_pattern(self.IP_BLOCKED_PATTERN, self.data): |
| 327 | self.fail(_("Connection from your current IP address is not allowed")) |
| 328 | |
| 329 | elif not self.premium: |
| 330 | if search_pattern(self.PREMIUM_ONLY_PATTERN, self.data): |
| 331 | self.fail(_("File can be downloaded by premium users only")) |
| 332 | |
| 333 | elif search_pattern(self.SIZE_LIMIT_PATTERN, self.data): |
| 334 | self.fail(_("File too large for free download")) |
| 335 | |
| 336 | elif self.DL_LIMIT_PATTERN: |
| 337 | m = search_pattern(self.DL_LIMIT_PATTERN, self.data) |
| 338 | if m is not None: |
| 339 | try: |
| 340 | errmsg = m.group(1) |
| 341 | |
| 342 | except (AttributeError, IndexError): |
| 343 | errmsg = m.group(0) |
| 344 | |
| 345 | finally: |
| 346 | errmsg = re.sub(r'<.*?>', " ", errmsg.strip()) |
| 347 | |
| 348 | self.info['error'] = errmsg |
| 349 | self.log_warning(errmsg) |
| 350 | |
| 351 | wait_time = parse_time(errmsg) |
| 352 | self.wait(wait_time, reconnect=wait_time > self.config.get('max_wait', 10) * 60) |
| 353 | self.restart(_("Download limit exceeded")) |
| 354 | |
| 355 | if search_pattern(self.HAPPY_HOUR_PATTERN, self.data): |
| 356 | self.multiDL = True |
| 357 | |
| 358 | if self.ERROR_PATTERN: |
| 359 | m = search_pattern(self.ERROR_PATTERN, self.data) |
| 360 | if m is not None: |
| 361 | try: |
| 362 | errmsg = m.group(1).strip() |
| 363 | |
| 364 | except (AttributeError, IndexError): |
| 365 | errmsg = m.group(0).strip() |
| 366 | |
| 367 | finally: |
| 368 | errmsg = re.sub(r'<.*?>', " ", errmsg) |
| 369 | |
| 370 | self.info['error'] = errmsg |
| 371 | self.log_warning(errmsg) |
| 372 | |
| 373 | if search_pattern(self.TEMP_OFFLINE_PATTERN, errmsg): |
| 374 | self.temp_offline() |
| 375 | |
| 376 | elif search_pattern(self.OFFLINE_PATTERN, errmsg): |
no test coverage detected