Coverage for mindsdb / integrations / handlers / clipdrop_handler / clipdrop.py: 0%
62 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-21 00:36 +0000
1import requests
2import uuid
5class ClipdropClient:
6 def __init__(self, api_key, local_dir):
7 self.api_key = api_key
8 self.dir_to_save = local_dir if local_dir.endswith("/") else local_dir + "/"
9 self.base_endpoint = "https://clipdrop-api.co/"
11 def write_to_file(self, img):
12 f_name = self.dir_to_save + str(uuid.uuid4()) + ".png"
13 with open(f_name, "wb") as f:
14 f.write(img)
15 return f_name
17 def make_request(self, url, files={}, data={}):
18 headers = {"x-api-key": self.api_key}
19 resp = requests.post(url, headers=headers, files=files, data=data)
20 if resp.status_code == 200:
21 saved_path = self.write_to_file(resp.content)
22 return saved_path
23 return resp.text
25 def image_extension_check(self, url):
26 ext = url.split(".")[-1]
27 if ext in ["jpeg", "jpg", "png"]:
28 return ext
29 raise Exception("Unknown image format. Currently jpg, jpeg & png are supported.")
31 def download_image(self, path):
33 img_ext = self.image_extension_check(path)
34 try:
35 res = requests.get(path)
36 return {"img_ext": img_ext, "content": res.content}
37 except Exception as e:
38 raise Exception(f"Failed to download image: {e}")
40 def remove_text(self, img_url):
41 url = f'{self.base_endpoint}remove-text/v1'
42 img_content = self.download_image(img_url)
43 files = {
44 'image_file': ('image.jpg', img_content["content"], f'image/{img_content["img_ext"]}')
45 }
46 return self.make_request(url, files=files)
48 def remove_background(self, img_url):
49 url = f'{self.base_endpoint}remove-background/v1'
50 img_content = self.download_image(img_url)
51 files = {
52 'image_file': ('image.jpg', img_content["content"], f'image/{img_content["img_ext"]}')
53 }
54 return self.make_request(url, files=files)
56 def sketch_to_image(self, img_url, prompt):
57 url = f'{self.base_endpoint}sketch-to-image/v1/sketch-to-image'
58 img_content = self.download_image(img_url)
59 files = {
60 'sketch_file': ('image.jpg', img_content["content"], f'image/{img_content["img_ext"]}')
61 }
62 data = {'prompt': prompt}
63 return self.make_request(url, files=files, data=data)
65 def text_to_image(self, prompt):
66 url = f'{self.base_endpoint}text-to-image/v1'
67 files = {
68 'prompt': (None, prompt, 'text/plain')
69 }
70 return self.make_request(url, files=files)
72 def replace_background(self, img_url, prompt):
73 url = f'{self.base_endpoint}replace-background/v1'
74 img_content = self.download_image(img_url)
75 files = {
76 'image_file': ('image.jpg', img_content["content"], f'image/{img_content["img_ext"]}')
77 }
78 data = {'prompt': prompt}
79 return self.make_request(url, files=files, data=data)
81 def reimagine(self, img_url):
82 url = f'{self.base_endpoint}reimagine/v1/reimagine'
83 img_content = self.download_image(img_url)
84 files = {
85 'image_file': ('image.jpg', img_content["content"], f'image/{img_content["img_ext"]}')
86 }
87 return self.make_request(url, files=files)