
import argparse
import os
from io import BytesIO
from pathlib import Path

import requests
from clip_retrieval.clip_client import ClipClient
from PIL import Image
from tqdm import tqdm







def 						_snake_case(  SCREAMING_SNAKE_CASE__ ,     SCREAMING_SNAKE_CASE__ ,     SCREAMING_SNAKE_CASE__    )			->   str:
       lowercase							:					int	     =				1.5
       lowercase							:					List[Any]	     =				int(factor * num_class_images    )
       lowercase							:					Optional[Any]	     =				ClipClient(
           url="""https://knn.laion.ai/knn-service""" ,     indice_name="""laion_400m""" ,     num_images=SCREAMING_SNAKE_CASE_ ,     aesthetic_weight=0.1    )

       os.makedirs(f"{class_data_dir}/images" ,     exist_ok=SCREAMING_SNAKE_CASE_    )
       if len(list(Path(f"{class_data_dir}/images"    ).iterdir()    )    ) >= num_class_images:
              return

       while True:
              lowercase							:					Any	     =				client.query(text=SCREAMING_SNAKE_CASE_    )
              if len(SCREAMING_SNAKE_CASE_    ) >= factor * num_class_images or num_images > 1e4:
                     break
              else:
                     lowercase							:					int	     =				int(factor * num_images    )
                     lowercase							:					Dict	     =				ClipClient(
                         url="""https://knn.laion.ai/knn-service""" ,     indice_name="""laion_400m""" ,     num_images=SCREAMING_SNAKE_CASE_ ,     aesthetic_weight=0.1 ,     )

       lowercase							:					Union[str, Any]	     =				0
       lowercase							:					List[str]	     =				0
       lowercase							:					str	     =				tqdm(desc="""downloading real regularization images""" ,     total=SCREAMING_SNAKE_CASE_    )

       with open(f"{class_data_dir}/caption.txt" ,     """w"""    ) as fa, open(f"{class_data_dir}/urls.txt" ,     """w"""    ) as fa, open(
           f"{class_data_dir}/images.txt" ,     """w"""    ) as fa:
              while total < num_class_images:
                     lowercase							:					str	     =				class_images[count]
                     count += 1
                     try:
                            lowercase							:					Any	     =				requests.get(images["""url"""]    )
                            if img.status_code == 200:
                                   lowercase							:					List[Any]	     =				Image.open(BytesIO(img.content    )    )
                                   with open(f"{class_data_dir}/images/{total}.jpg" ,     """wb"""    ) as f:
                                          f.write(img.content    )
                                   fa.write(images["""caption"""] + """\n"""    )
                                   fa.write(images["""url"""] + """\n"""    )
                                   fa.write(f"{class_data_dir}/images/{total}.jpg" + """\n"""    )
                                   total += 1
                                   pbar.update(1    )
                            else:
                                   continue
                     except Exception:
                            continue
       return







def 						_snake_case(  )			->   List[str]:
       lowercase							:					Optional[int]	     =				argparse.ArgumentParser("""""" ,     add_help=SCREAMING_SNAKE_CASE_    )
       parser.add_argument("""--class_prompt""" ,     help="""text prompt to retrieve images""" ,     required=SCREAMING_SNAKE_CASE_ ,     type=SCREAMING_SNAKE_CASE_    )
       parser.add_argument("""--class_data_dir""" ,     help="""path to save images""" ,     required=SCREAMING_SNAKE_CASE_ ,     type=SCREAMING_SNAKE_CASE_    )
       parser.add_argument("""--num_class_images""" ,     help="""number of images to download""" ,     default=200 ,     type=SCREAMING_SNAKE_CASE_    )
       return parser.parse_args()


if __name__ == "__main__":
     lowercase  : List[Any]						   =							parse_args()
     retrieve(args.class_prompt, args.class_data_dir, args.num_class_images)


from collections.abc import Generator







def 						_snake_case(  )			->   Generator[int, None, None]:
       lowercase     ,      lowercase							:					List[str]	     =				0, 1
       while True:
              lowercase     ,      lowercase							:					Optional[int]	     =				b, a + b
              yield b







def 						_snake_case(  SCREAMING_SNAKE_CASE__ = 1_000    )			->   int:
       lowercase							:					List[Any]	     =				1
       lowercase							:					Tuple	     =				fibonacci_generator()
       while len(str(next(SCREAMING_SNAKE_CASE__    )    )    ) < n:
              answer += 1
       return answer + 1


if __name__ == "__main__":
  print(solution(int(str(input()).strip())))
