eso-tr-translation / db_utils.py
keremberke's picture
Upload db_utils.py
2e1e8ea verified
import os
import re
import random
from supabase.client import ClientOptions
from supabase import create_client, Client
from dotenv import load_dotenv
load_dotenv()
user_name_to_range = {'Kerem': (700001, 900000), 'Mehmet': (1, 500000), 'Ege': (500001, 700000), 'Ömer': (700001, 1013817)}
url: str = os.environ.get("SUPABASE_URL")
key: str = os.environ.get("SUPABASE_KEY")
supabase: Client = create_client(url, key, options=ClientOptions(postgrest_client_timeout=300))
def eso_replace_string(from_: str, to_: str, text: str):
# Regex pattern:
# \w*1\w* - En az bir '1' içeren kelimeleri bulur.
# Ancak bu, sadece "1" içeren tek karakterleri de içerebilir ve bu yüzden toplam uzunluğu kontrol ediyoruz.
pattern = fr'\b\w*{from_}\w*\b'
# Metindeki tüm kelimeler üzerinde dön
for word in re.findall(pattern, text):
# Eğer kelime en az 2 karakter içeriyorsa ve en az bir harf içeriyorsa
if len(word) > 1 and re.search("[a-zA-Z]", word):
modified_word = word.replace(from_, to_)
text = text.replace(word, modified_word)
return text
# Dosyayı açıp içeriğini okuyan ve içeriği bir string olarak döndüren fonksiyon
def dosyayi_oku(dosya_yolu):
try:
with open(dosya_yolu, 'r', encoding='iso-8859-9') as dosya:
icerik = dosya.read()
return icerik
except FileNotFoundError:
print("Dosya bulunamadı.")
except Exception as e:
print(f"Bir hata oluştu: {e}")
def get_next_row_id(user_name: str):
row_range = user_name_to_range[user_name]
data, count = supabase.table('eso-tr').select('id').gte('id', row_range[0]).lt('id', row_range[1]).eq('done', False).order('id', desc=False).limit(1).execute()
text_id = data[1][0]['id']
return text_id
def get_text_by_row_id(id: int):
data, count = supabase.table('eso-tr').select('text').eq('id', id).limit(1).execute()
text = data[1][0]['text']
return text
def add_updated_text_to_db(id: int, text: str):
data, count = supabase.table('eso-tr').update({'updated_text': text, 'done': True}).eq('id', id).execute()