from duckduckgo_search import DDGS
from pathlib import Path
from fastprogress.fastprogress import progress_bar
import requests
import uuid
from PIL import Image as PImage
root = Path().cwd()/"jilbabcantik" #isikan nama folder
keywords = 'jilbab cantik' #isikan kata kunci
max_results=20
links=[]
with DDGS(proxies="socks5://localhost:9150", timeout=20) as ddgs:
ddgs_images_gen = ddgs.images(
keywords,
safesearch="off",
)
for r in ddgs_images_gen:
#print(r["image"])
links.append(r["image"])
if len(links) >= max_results:
break
if(len(links) == 0):
print("Tidak ada yang bisa diunduh!");
uuid_names=True
path = Path(root)
path.mkdir(parents=True, exist_ok=True)
print("Mengunduh hasil ke dalam", path)
pbar = progress_bar(links)
pbar.comment = 'Gambar yang diunduh'
i = 1
mk_uniq = lambda : '_' + str(uuid.uuid4())[:8] if uuid_names else ''
mk_fp = lambda x: path/(str(x).zfill(3) + mk_uniq() + ".jpg")
is_file = lambda x: len(list(path.glob(str(x).zfill(3) + '*.jpg'))) > 0
while is_file(i): i += 1
results = []
for link in pbar:
try:
resp = requests.get(link)
fp = mk_fp(i)
fp.write_bytes(resp.content)
try:
img = PImage.open(fp)
img.verify()
img.close()
results.append(Path(fp))
except Exception as e:
print(e)
print(fp, " tidak valid")
fp.unlink()
except Exception as e:
print(e)
print("Terjadi pengecualian saat mengambil ", link)
i += 1