高速にしました
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))