This is the function that goes on a loop for performers and passes the image path to the next function " def upscale\_PerformerImage(self):
 global app\_keys

 # Terminate Gigapixel if running
 # self.terminate\_gigapixel()
 
 scale\_mapping = {
 "0.5x": Scale.X05,
 "2x": Scale.X2,
 "4x": Scale.X4,
 "6x": Scale.X6,
 }

 mode\_mapping = {
 "Standard": Mode.STANDARD,
 "Lines": Mode.Lines,
 "Art & CG": Mode.ART\_AND\_CG,
 "Low Resolution": Mode.LOW\_RESOLUTION,
 "Very Compressed": Mode.VERY\_COMPRESSED,
 }

 for tag\_name in tag\_names:
 tag\_id = self.findTagIdWithName(tag\_name)

 if tag\_id == None:
 self.error("tag\_id: Is none")
 else:
 performers = self.findPerformersByTag(tag\_id)
 for performer in performers:
 performer\_id = performer[0] # Initialize performer\_id here
 performer\_name = performer[1]
 tags = self.findPerformersTagsbyID(
 performer\_name) # ['tags']
 if not tag\_names:
 self.error("tag\_names is empty")
 else:
 if not tags:
 self.error("tags is empty")
 else:
 for tag in tags:
 if tag in tag\_names:
 if len(set(tags).intersection(tag\_names)) > 1:
 self.error("Performer with ID '{performer\_id}' is tagged with more than one value in tag\_names- skipping")
 continue
 else:
 tag = tag.replace("Upscale ", "")
 split\_list = tag.split(":")
 first\_half = split\_list[0]
 second\_half = split\_list[1]
 scale\_setting = scale\_mapping.get(second\_half, None)
 if scale\_setting is None:
 self.error("No scale setting in tags")
 self.error("tag: " +tag)

 else:
 scale\_value = scale\_setting.value
 mode\_setting = mode\_mapping.get(first\_half, None)
 if mode\_setting is None:
 self.error("No mode setting in tags")
 self.error("tag: " +tag)

 else:
 mode\_value = mode\_setting.value

 performer\_id = performer[1]
 image\_path = performer[0]
 self.processPerformerImage(image\_path, performer\_id, scale\_setting, scale\_value, mode\_setting, mode\_value)
 else:
 self.error("tag: '{tag}' is not in tag\_names")". It's in the next function I need the code to convert an image to jpeg, if the filetype does not exist in a variable image\_filetype but if the image cannot be converted to jpeg, the function cannot stop, it must go back to the previous function and continue with the for loop with performers to go through the functions again to convert images if possible for other performers. Here is the second function. " def processPerformerImage(self, image\_path, performer\_id, scale\_setting, scale\_value, mode\_setting, mode\_value):
 global tag\_ids
 global app\_keys
 tag\_ids = []
 # Clear variables
 # r = None
 # img = None
 # file\_format = None
 # image\_name = Noneimage\_saved = None
 # image\_pro = None
 # image\_pro\_resolve = None
 # custom\_mapped\_folder\_resolve = None
 # output\_path = None
 
 # code to process image using the gigapixel library
 # using the scale and mode values passed as arguments
 scale = Scale.\_\_getattr\_\_(scale\_setting.name)
 mode = Mode.\_\_getattr\_\_(mode\_setting.name)

 # Set current directory
 current\_dir = Path().resolve()

 # Download image data from the image URL
 r = requests.get(image\_path, stream=True, headers=self.headers)
 r.raw.decode\_content = True

 # Get file format
 img = Image.open(BytesIO(r.content))
 file\_format = img.format.lower()

 # Variable for saved image
 image\_name = "image\_to\_process." + file\_format
 image\_saved = current\_dir / image\_name

 # Check if original image already exists in root & delete
 if os.path.exists(image\_saved):
 # os.remove(image\_saved)
 self.delete\_file\_with\_permissions\_check(image\_saved)

 # Check if processed image already exists in root & delete
 split\_image = image\_name.split(".")
 image\_name = split\_image[0]
 file\_ext = split\_image[1]
 image\_pro = image\_name + output\_suffix + "." + file\_ext
 image\_pro\_resolve = os.path.join(current\_dir, image\_pro)
 if os.path.exists(image\_pro\_resolve):
 # os.remove(image\_pro\_resolve)
 self.delete\_file\_with\_permissions\_check(image\_pro\_resolve)

 # Check if processed image already exists in mapped folder & delete
 custom\_mapped\_folder\_resolve = os.path.join(custom\_mapped\_folder, image\_pro)
 if os.path.exists(custom\_mapped\_folder\_resolve):
 # os.remove(custom\_mapped\_folder\_resolve)
 self.delete\_file\_with\_permissions\_check(custom\_mapped\_folder\_resolve)

 # Save image
 with open(image\_saved, 'wb') as f:
 img.save(f, "JPEG", quality=95, optimize=True)

 # Process the image
 output\_path = app.process(image\_saved, scale=scale, mode=mode)

 # clear the image
 app.send\_keys\_clear()
 # move the processed image to custom mapped folder
 image\_moved = shutil.move(output\_path, custom\_mapped\_folder)

 # Upload URL of image
 image\_upload\_url = custom\_mapped\_url + "/" + image\_pro

 # Update performer with new image
 query = """
 mutation performerUpdate($performer\_update\_input: PerformerUpdateInput!){
 performerUpdate(input: $performer\_update\_input){
 id
 }
 }
 """
 variables = {"performer\_update\_input": {
 "image": image\_upload\_url, "id": performer\_id}}
 result = self.\_\_callGraphQL(query, variables)

 # Update Performer Tags
 tags = self.findPerformersTagsbyID(performer\_id)
 tag\_to\_remove = "Upscale " + str(mode\_value) + ":" + str(scale\_value)
 self.error("tag\_to\_remove: "+tag\_to\_remove)
 for tag in tags:
 if tag\_to\_remove not in tag:
 tag\_ids.append(self.findTagIdWithName(tag))
 self.error("tag\_ids: "+str(tag\_ids))
 else:
 pass # The else block does nothing
 upscaled\_name = "Upscaled: Performer Image"
 upscaled = self.findTagIdWithName(upscaled\_name)
 tag\_ids.append(upscaled)
 # remove the marker value
 self.error("tag\_ids: "+str(tag\_ids))
 self.updatePerformerIDTagsWithID(performer\_id, tag\_ids)

 # Delete the processed image
 custom\_mapped\_folder\_resolve = os.path.join(custom\_mapped\_folder, image\_pro)
 if os.path.exists(custom\_mapped\_folder\_resolve):
 # os.remove(custom\_mapped\_folder\_resolve)
 self.delete\_file\_with\_permissions\_check(custom\_mapped\_folder\_resolve)

 # Delete the original image
 if os.path.exists(image\_saved):
 os.remove(image\_saved)"
그의 함수는 퍼포머에 대해 루프를 수행하고 이미지 경로를 다음 함수에 전달하는 함수입니다." def upscale\_PerformerImage(self): 글로벌 앱\_키 # 실행 중인 경우 기가픽셀 종료 # self.terminate\_gigapixel()  scale\_mapping = { "0.5x": Scale.X05, "2x": Scale.X2, "4x": Scale.X4, "6x": Scale.X6, } mode\_mapping = { "Standard": Mode.STANDARD, "Lines": Mode.Lines, "아트 & CG": Mode.ART\_AND\_CG, "저해상도": Mode.LOW\_RESOLUTION, "매우 압축": Mode.VERY\_COMPRESSED, } 태그\_이름의 태그\_이름에 대해: tag\_id = self.findTagIdWithName(tag\_name) if tag\_id == None: self.error("tag\_id: 없음") else: performers = self.findPerformersByTag(tag\_id) 를 수행합니다: performer\_id = performer[0] # 여기서 performer\_id를 초기화합니다. performer\_name = performer[1] tags = self.findPerformersTagsbyID( performer\_name) # ['태그'] 태그\_이름이 아닌 경우 self.error("tag\_names가 비어 있습니다") else: 태그가 아닌 경우 self.error("태그가 비어 있습니다") else: 태그의 태그에 대해 태그가 태그\_이름에 있으면 if len(set(tags).intersection(tag\_names)) > 1: self.error("ID가 '{performer\_id}'인 퍼포머가 tag\_names에 둘 이상의 값으로 태그되어 있습니다- 건너뛰기") 계속 else: tag = tag.replace("업스케일 ", "") split\_list = tag.split(":") first\_half = split\_list[0] second\_half = split\_list[1] scale\_setting = scale\_mapping.get(second\_half, None) scale\_setting이 None인 경우: self.error("태그에 스케일 설정이 없습니다") self.error("태그:" +tag) else: scale\_value = scale\_setting.value mode\_setting = mode\_mapping.get(first\_half, None) 모드\_설정값이 None이면 self.error("태그에 모드 설정이 없습니다") self.error("태그: " +tag) else: 모드\_값 = 모드\_설정.값 performer\_id = performer[1] image\_path = performer[0] self.processPerformerImage(image\_path, performer\_id, scale\_setting, scale\_value, mode\_setting, mode\_value) else: self.error("태그: '{태그}'가 태그\_이름에 없습니다")". 다음 함수에서는 이미지를 jpeg로 변환하는 코드가 필요한데, 파일 형식이 변수 image\_filetype에 존재하지 않지만 이미지를 jpeg로 변환할 수 없는 경우 함수를 중지할 수 없고 이전 함수로 돌아가서 다른 수행자를 위해 가능한 경우 이미지를 변환하기 위해 함수를 다시 통과하도록 수행자들과 함께 for 루프를 계속해야 합니다. 다음은 두 번째 함수입니다. " def processPerformerImage(self, image\_path, performer\_id, scale\_setting, scale\_value, mode\_setting, mode\_value): 글로벌 태그\_ids 글로벌 앱\_키 tag\_ids = [] # 변수 지우기 # r = None # 이미지 = 없음 # 파일\_형식 = 없음 # 이미지\_이름 = 없음이미지\_저장 = 없음 # 이미지\_프로 = 없음 # 이미지\_프로\_해결 = 없음 # 사용자 지정\_맵핑\_폴더\_해결 = 없음 # 출력\_경로 = 없음  # 기가픽셀 라이브러리를 사용하여 이미지를 처리하는 코드 # 인자로 전달된 스케일 및 모드 값 사용 scale = Scale.\_\_getattr\_\_(scale\_setting.name) 모드 = 모드.\_\_getattr\_\_(모드\_설정.이름) # 현재 디렉토리 설정 current\_dir = Path().resolve() # 이미지 URL에서 이미지 데이터 다운로드 r = requests.get(image\_path, stream=True, headers=self.headers) r.raw.decode\_content = True # 파일 형식 가져오기 img = Image.open(BytesIO(r.content)) file\_format = img.format.lower() # 저장된 이미지에 대한 변수 image\_name = "image\_to\_process." + 파일\_형식 image\_saved = 현재\_dir/이미지\_이름 # 원본 이미지가 루트에 이미 존재하는지 확인 후 삭제 os.path.exists(image\_saved): # os.remove(image\_saved) self.delete\_file\_with\_permissions\_check(image\_saved) # 처리된 이미지가 이미 루트에 있는지 확인하고 삭제합니다. split\_image = image\_name.split(".") image\_name = split\_image[0] file\_ext = split\_image[1] image\_pro = 이미지\_이름 + 출력\_suffix + "." + 파일\_ext image\_pro\_resolve = os.path.join(current\_dir, image\_pro) if os.path.exists(image\_pro\_resolve): # os.remove(image\_pro\_resolve) self.delete\_file\_with\_permissions\_check(image\_pro\_resolve) # 처리된 이미지가 매핑된 폴더에 이미 있는지 확인하고 삭제합니다. custom\_mapped\_folder\_resolve = os.path.join(custom\_mapped\_folder, image\_pro) if os.path.exists(custom\_mapped\_folder\_resolve): # os.remove(custom\_mapped\_folder\_resolve) self.delete\_file\_with\_permissions\_check(custom\_mapped\_folder\_resolve) # 이미지 저장 open(image\_saved, 'wb')를 f로 사용합니다: img.save(f, "JPEG", quality=95, optimize=True) # 이미지 처리 output\_path = app.process(image\_saved, scale=scale, mode=mode) # 이미지 지우기 app.send\_keys\_clear() # 처리된 이미지를 사용자 지정 매핑 폴더로 이동합니다. image\_moved = shutil.move(output\_path, custom\_mapped\_folder) # 이미지의 URL 업로드 image\_upload\_url = custom\_mapped\_url + "/" + image\_pro # 새 이미지로 수행자 업데이트 query = """ mutation performerUpdate($performer\_update\_input: PerformerUpdateInput!){ performerUpdate(입력: $performer\_update\_input){ id } } """ 변수 = {"performer\_update\_input": { "이미지"