From bcbf14d1aa450623e586d13f0ed357ecb658b96f Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 12 Aug 2022 13:23:53 +0700 Subject: [PATCH] better errorhandeling in _get_vote --- ryd_client/ryd_client.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ryd_client/ryd_client.py b/ryd_client/ryd_client.py index 0686768..bce0d41 100644 --- a/ryd_client/ryd_client.py +++ b/ryd_client/ryd_client.py @@ -4,6 +4,7 @@ import base64 import hashlib import random import string +from time import sleep import requests @@ -217,19 +218,25 @@ class VoteGet: def _get_vote(youtube_id): """get vote from a single video""" url = f"{API_URL}/votes?videoId={youtube_id}" - votes = requests.get(url, headers=HEADERS) + try: + votes = requests.get(url, headers=HEADERS, timeout=3) + except requests.exceptions.RequestException: + sleep(5) + votes = requests.get(url, headers=HEADERS, timeout=5) + + if not votes: + raise ConnectionError("failed to connect to API") if votes.ok: parsed = votes.json() parsed["status"] = votes.status_code del parsed["dateCreated"] - elif votes.status_code in [400, 404]: + else: + print(f"{youtube_id}: API returns error code {votes.status_code}.") parsed = { "id": youtube_id, "status": votes.status_code, } - elif votes.status_code == 429: - print("ratelimiting reached, cancel") return parsed