高速にしました

 

import xml.etree.ElementTree as ET
import csv
import asyncio
from googletrans import Translator  # Or whichever library you are using
import glob, os

#まとめて変換で高速化

def getTags(xmp_string):
   root = ET.fromstring(xmp_string)
   ns = {"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#"}
   li_elements = root.findall(".//rdf:li", namespaces=ns)
   tags = [elem.text for elem in li_elements if elem.text is not None]
   w=""
   for  item in tags:
      if (item!="st" and ("st|" not in item)):
         w=w+";"+item

   return w

async def main(picdir ):
    c=0
    sw=""
    str=""
    xmp_files =glob.glob(picdir+"\*.xmp")
    for xmp in xmp_files:
        with open(xmp, 'r', encoding='utf-8') as f:
            xmpdata = f.read()
            w=getTags(xmpdata)
 #           print(w)
            f=xmp
            f=f.replace("jpg.xmp","webp")
            f=f.replace("JPG.xmp","webp")
            f=f.replace(picdir,"")
            f=f.replace("\\","")

            sw=sw+f"@   ('{f}','"+w+"');"+"\n"
            if (c==60):
               translator = Translator()
               trans_text = await translator.translate(sw, dest='ja')
               str=str+trans_text.text+"\n"
               sw=""
               c=0
            c=c+1         
    str=str.replace("@","insert into photos (filename,tags) values  ")
    print ( str)
 #           print(f"insert into photos (filename,tags) values('{f}','{trans_text.text}');")

picdir="../org_picture"
picdir=input()
asyncio.run(main(picdir))