forked from LiveCarta/BookConverter
Add sleep(3s) to send images
This commit is contained in:
@@ -34,8 +34,24 @@ class Access:
|
|||||||
self.get_token()
|
self.get_token()
|
||||||
self.refreshing.set()
|
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):
|
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")
|
config_path = os.path.join(folder_path, "config/api_config.json")
|
||||||
with open(config_path, "r") as f:
|
with open(config_path, "r") as f:
|
||||||
params = json.load(f)
|
params = json.load(f)
|
||||||
@@ -82,7 +98,8 @@ class Access:
|
|||||||
response = requests.post(f'{self.url}/token', json=json_form)
|
response = requests.post(f'{self.url}/token', json=json_form)
|
||||||
|
|
||||||
if response.status_code == 400:
|
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:
|
elif response.status_code == 401:
|
||||||
self.get_token()
|
self.get_token()
|
||||||
elif response.status_code == 200:
|
elif response.status_code == 200:
|
||||||
@@ -100,7 +117,8 @@ class Access:
|
|||||||
self.refresh_token()
|
self.refresh_token()
|
||||||
|
|
||||||
self.refreshing.wait()
|
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:
|
if response.status_code == 404:
|
||||||
raise FileNotFoundError('404 Not Found: file have not found.')
|
raise FileNotFoundError('404 Not Found: file have not found.')
|
||||||
@@ -112,28 +130,26 @@ class Access:
|
|||||||
|
|
||||||
return content
|
return content
|
||||||
|
|
||||||
|
@sleep(3)
|
||||||
def send_image(self, img_path, doc_id, img_content: bytes = None):
|
def send_image(self, img_path, doc_id, img_content: bytes = None):
|
||||||
if self.is_time_for_refreshing():
|
if self.is_time_for_refreshing():
|
||||||
self.refresh_token()
|
self.refresh_token()
|
||||||
|
|
||||||
self.refreshing.wait()
|
self.refreshing.wait()
|
||||||
|
|
||||||
img_obj = BytesIO(img_content) if img_content else open(img_path, 'rb')
|
img_obj = BytesIO(img_content) if img_content else open(img_path, 'rb')
|
||||||
files = {
|
files = {
|
||||||
'image': (os.path.basename(img_path), img_obj)
|
'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()
|
img_obj.close()
|
||||||
|
|
||||||
if response.status_code == 400:
|
if response.status_code == 200:
|
||||||
self.update_status(doc_id, self.ERROR)
|
|
||||||
raise Exception(f'400 Bad request: {response.json()["message"]}.')
|
|
||||||
elif response.status_code == 200:
|
|
||||||
img_url = response.json()['imageUrl']
|
img_url = response.json()['imageUrl']
|
||||||
else:
|
else:
|
||||||
self.update_status(doc_id, self.ERROR)
|
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
|
return img_url
|
||||||
|
|
||||||
def send_book(self, doc_id, content):
|
def send_book(self, doc_id, content):
|
||||||
@@ -144,27 +160,26 @@ class Access:
|
|||||||
json_content = {
|
json_content = {
|
||||||
'json': json.dumps(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:
|
if response.status_code == 200:
|
||||||
self.update_status(doc_id, self.ERROR)
|
|
||||||
raise Exception(f'400 Bad request')
|
|
||||||
elif response.status_code == 200:
|
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
self.update_status(doc_id, self.ERROR)
|
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):
|
def update_status(self, doc_id, status):
|
||||||
if self.is_time_for_refreshing():
|
if self.is_time_for_refreshing():
|
||||||
self.refresh_token()
|
self.refresh_token()
|
||||||
|
|
||||||
self.refreshing.wait()
|
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:
|
if response.status_code == 200:
|
||||||
raise Exception(f'400 Bad request')
|
|
||||||
elif response.status_code == 200:
|
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
raise Exception(f'{response.status_code}')
|
raise Exception(
|
||||||
|
f'{response.status_code} Bad request: {response.json()["message"]}.')
|
||||||
@@ -33,7 +33,8 @@ def update_src_links_in_images(body_tag: Tag,
|
|||||||
href2img_content: dict,
|
href2img_content: dict,
|
||||||
path_to_html,
|
path_to_html,
|
||||||
access=None,
|
access=None,
|
||||||
path2aws_path=None):
|
path2aws_path=None,
|
||||||
|
book_id=None):
|
||||||
img_tags = body_tag.find_all('img')
|
img_tags = body_tag.find_all('img')
|
||||||
|
|
||||||
for img in img_tags:
|
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]
|
new_folder = path2aws_path[path_to_img_from_root]
|
||||||
else:
|
else:
|
||||||
new_folder = save_image_to_aws(
|
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
|
path2aws_path[path_to_img_from_root] = new_folder
|
||||||
else:
|
else:
|
||||||
new_folder = save_image_locally(
|
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)
|
img.attrs['src'] = str(new_folder)
|
||||||
if img.attrs.get('width'):
|
if img.attrs.get('width'):
|
||||||
|
|||||||
Reference in New Issue
Block a user