יש לי סקריפט שעושה את זה בשני שלבים, א':
import os
from googletrans import Translator
import re
def is_hebrew(text):
# Use a regular expression to check if the text contains Hebrew characters
return bool(re.search(r'[\u0590-\u05FF]+', text))
def translate_folder_names(main_folder_path, output_file):
translator = Translator()
translations = {}
with open(output_file, 'w', encoding='utf-8') as output:
for root, dirs, files in os.walk(main_folder_path):
for folder_name in dirs:
if not is_hebrew(folder_name) and folder_name not in translations:
try:
translated_name = translator.translate(folder_name, src='en', dest='he').text
translations[folder_name] = translated_name
output.write(f"{folder_name} = {translated_name}\n")
except Exception as e:
print(f"Error translating folder '{folder_name}': {str(e)}")
return translations
if __name__ == "__main__":
main_folder_path = "/home/zevi/מילונים"
output_file = "translations.txt"
translations = translate_folder_names(main_folder_path, output_file)
print("Folder names translated and saved to translations.txt.")
הסקריפט הזה מדפיס את כל שמות הקבצים לקובץ טקסט עם התרגום שלהם מתרגום גוגל, ב':
אחרי שעברת על הקובץ ותיקנת את הטעון תיקון להריץ את הסקריפט הזה:
import os
def rename_folders_according_to_translation(main_folder_path, translation_file, log_file):
translations = {}
log = []
# Load translations from the translation file
with open(translation_file, 'r', encoding='utf-8') as file:
for line in file:
parts = line.strip().split(' = ')
if len(parts) == 2:
translations[parts[0]] = parts[1]
# Rename folders and log changes
for root, dirs, files in os.walk(main_folder_path, topdown=False):
for folder_name in dirs:
if folder_name in translations:
old_folder_path = os.path.join(root, folder_name)
new_folder_name = translations[folder_name]
new_folder_path = os.path.join(root, new_folder_name)
os.rename(old_folder_path, new_folder_path)
log.append(f"Renamed: {old_folder_path} -> {new_folder_path}")
# Write log to a file
with open(log_file, 'w', encoding='utf-8') as file:
file.write('\n'.join(log))
if __name__ == "__main__":
main_folder_path = "/media/zevi/My Passport/ספריא סופי/ספריא/ערוך/נוסח אחד/תורת אמת/עברית"
translation_file = "translations.txt"
log_file = "rename_log.txt"
rename_folders_according_to_translation(main_folder_path, translation_file, log_file)
print("Folders renamed according to translations. Log saved in rename_log.txt.")
שים לב להתקין חבילות ולשנות לנתיב הקבצים הרצוי
[זה עובד גם על תתי תיקיות]