diff --git a/src/access.py b/src/access.py index 2bb508b..9d77a38 100644 --- a/src/access.py +++ b/src/access.py @@ -34,8 +34,24 @@ class Access: self.get_token() self.refreshing.set() + def sleep(timeout: float, retry=3): + def decorator(function): + def wrapper(*args, **kwargs): + retries = 0 + while retries < retry: + try: + value = function(*args, **kwargs) + if value is not None: + return + except: + time.sleep(timeout) + retries += 1 + return wrapper + return decorator + def set_credentials(self, url): - folder_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + folder_path = os.path.dirname( + os.path.dirname(os.path.abspath(__file__))) config_path = os.path.join(folder_path, "config/api_config.json") with open(config_path, "r") as f: params = json.load(f) @@ -82,7 +98,8 @@ class Access: response = requests.post(f'{self.url}/token', json=json_form) if response.status_code == 400: - raise Exception('400 Bad request: wrong request parameters for refreshing.') + raise Exception( + '400 Bad request: wrong request parameters for refreshing.') elif response.status_code == 401: self.get_token() elif response.status_code == 200: @@ -100,7 +117,8 @@ class Access: self.refresh_token() self.refreshing.wait() - response = requests.get(f'{self.url}/doc-convert/{book_id}/file', headers=self.headers) + response = requests.get( + f'{self.url}/doc-convert/{book_id}/file', headers=self.headers) if response.status_code == 404: raise FileNotFoundError('404 Not Found: file have not found.') @@ -112,28 +130,26 @@ class Access: return content + @sleep(3) def send_image(self, img_path, doc_id, img_content: bytes = None): if self.is_time_for_refreshing(): self.refresh_token() - self.refreshing.wait() img_obj = BytesIO(img_content) if img_content else open(img_path, 'rb') files = { 'image': (os.path.basename(img_path), img_obj) } - response = requests.post(f'{self.url}/doc-convert/image', files=files, headers=self.headers) + response = requests.post( + f'{self.url}/doc-convert/image', files=files, headers=self.headers) img_obj.close() - if response.status_code == 400: - self.update_status(doc_id, self.ERROR) - raise Exception(f'400 Bad request: {response.json()["message"]}.') - elif response.status_code == 200: + if response.status_code == 200: img_url = response.json()['imageUrl'] else: self.update_status(doc_id, self.ERROR) - raise Exception(f'{response.status_code}') - + raise Exception( + f'{response.status_code} Bad request: {response.json()["message"]}.') return img_url def send_book(self, doc_id, content): @@ -144,27 +160,26 @@ class Access: json_content = { 'json': json.dumps(content) } - response = requests.post(f'{self.url}/doc-convert/{doc_id}/import', json=json_content, headers=self.headers) + response = requests.post( + f'{self.url}/doc-convert/{doc_id}/import', json=json_content, headers=self.headers) - if response.status_code == 400: - self.update_status(doc_id, self.ERROR) - raise Exception(f'400 Bad request') - elif response.status_code == 200: + if response.status_code == 200: pass else: self.update_status(doc_id, self.ERROR) - raise Exception(f'{response.status_code}') + raise Exception( + f'{response.status_code} Bad request: {response.json()["message"]}.') def update_status(self, doc_id, status): if self.is_time_for_refreshing(): self.refresh_token() self.refreshing.wait() - response = requests.patch(f'{self.url}/doc-convert/{doc_id}/status/{status}', headers=self.headers) + response = requests.patch( + f'{self.url}/doc-convert/{doc_id}/status/{status}', headers=self.headers) - if response.status_code == 400: - raise Exception(f'400 Bad request') - elif response.status_code == 200: + if response.status_code == 200: pass else: - raise Exception(f'{response.status_code}') + raise Exception( + f'{response.status_code} Bad request: {response.json()["message"]}.') \ No newline at end of file diff --git a/src/epub_converter/html_epub_preprocessor.py b/src/epub_converter/html_epub_preprocessor.py index 2359af1..bd83a59 100644 --- a/src/epub_converter/html_epub_preprocessor.py +++ b/src/epub_converter/html_epub_preprocessor.py @@ -33,7 +33,8 @@ def update_src_links_in_images(body_tag: Tag, href2img_content: dict, path_to_html, access=None, - path2aws_path=None): + path2aws_path=None, + book_id=None): img_tags = body_tag.find_all('img') for img in img_tags: @@ -51,11 +52,11 @@ def update_src_links_in_images(body_tag: Tag, new_folder = path2aws_path[path_to_img_from_root] else: new_folder = save_image_to_aws( - access, path_to_img_from_root, img_content, 'book_id') + access, path_to_img_from_root, img_content, book_id) path2aws_path[path_to_img_from_root] = new_folder else: new_folder = save_image_locally( - path_to_img_from_root, img_content, 'book_id') + path_to_img_from_root, img_content, book_id) img.attrs['src'] = str(new_folder) if img.attrs.get('width'):