Skip to content

Instantly share code, notes, and snippets.

@MayankFawkes
Last active September 20, 2022 11:52
Show Gist options
  • Save MayankFawkes/735594fe43122207ab7fb4eb573fde23 to your computer and use it in GitHub Desktop.
Save MayankFawkes/735594fe43122207ab7fb4eb573fde23 to your computer and use it in GitHub Desktop.
Remove background
from io import BytesIO
from PIL import Image
from re import compile, search, findall, sub
import requests
class Background1:
PATTERN_CSRF = compile(r'<meta name="csrf-token" content="(.*)"')
PATTERN_TOKEN = compile(r"useToken\(\'(.*?)\'\)")
DOMAIN = "https://www.remove.bg"
def __init__(self):
self.session, self.csrf = Background1.make_session()
self.session.headers.update({
"x-csrf-token": self.csrf,
"referer": f"{self.DOMAIN}/upload",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"
})
res = self.session.post(f"{self.DOMAIN}/trust_tokens")
print(res.text)
self.token = self.PATTERN_TOKEN.findall(res.text)[0]
print(self.token)
@staticmethod
def make_session():
session = requests.Session()
home_page = session.get(Background1.DOMAIN)
print(home_page)
csrf = Background1.PATTERN_CSRF.findall(home_page.text)[0]
return session, csrf
def remove(self, fp:object):
if fp.name.endswith(".png"):
file_type = "image/png"
else:
file_type = "image/jpeg"
files = {
'image[original]': (fp.name, fp, file_type),
'trust_token': (None, self.token),
}
res = self.session.post(f"{self.DOMAIN}/images", files=files)
print(res.text)
url = res.json().get("url")
res = self.session.get(f"{self.DOMAIN}{url}")
print(res.text)
img_hash = res.json().get("id")
res = self.session.get(f"https://o.remove.bg/downloads/{img_hash}/photo-removebg-preview.png")
print(res.url)
return res.content
if __name__ == '__main__':
img = "photo.jpg"
fp = BytesIO(open(img, "rb").read())
fp.name = img
bg = Background1()
data = bg.remove(fp)
newimg = BytesIO(data)
Image.open(newimg).show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment