Скрипт призначений для перевірки Maya ASCII сцен (.ma) у вибраній папці на наявність підозрілих рядків, що створюють script-ноди з іменами:
vaccine_genebreed_geneЗа потреби скрипт може автоматично “знешкоджувати” ці рядки, коментуючи їх у файлі.
maya.cmds.fileDialog2()tkinter, тому не залежить від Tcl/Tk у комплекті MayaСкрипт вважає файл зараженим, якщо знаходить рядок, що починається з одного з патернів:
createNode script -n "vaccine_gene";createNode script -n "breed_gene";Примітка: перевірка виконується через startswith(), тобто важливий початок рядка. Якщо у файлі перед командою є пробіли/табуляція або інший формат рядка — скрипт може не спрацювати (див. розділ “Обмеження”).
Функція pick_folder_maya() відкриває стандартний діалог Maya і повертає шлях до обраної директорії або None, якщо користувач скасував вибір.
Функція find_files(directory, extension) рекурсивно обходить дерево папок через os.walk() і формує список шляхів до файлів з розширенням .ma (перевірка нечутлива до регістру).
Функція check_vaccine_node(file_path):
Infected: <path> і повертає TrueFalseФункція anti_vaccine_node(file_path):
//)truncate())File has been cured: <path>Функція run_scan(mode="scan"):
pick_folder_maya().ma файлівscan: тільки check_vaccine_node()cure: попередня перевірка + anti_vaccine_node() + повторна перевірка для статистикиInfected found: NCured: M (тільки у режимі cure).py і запускати через меню/лоадер.run_scan("scan") — лише пошук заражених сценrun_scan("cure") — пошук + коментування небезпечних рядківscan буде виведено:Infected: <повний_шлях_до_файлу>cure додатково буде виведено:File has been cured: <повний_шлях_до_файлу>scan не змінює файли.cure виконує перезапис файла “на місці” (in-place), змінюючи тільки рядки, що відповідають патернам (додає // на початку).Рекомендація: перед масовим лікуванням запускати на копії або мати резервну копію/версіонування.
startswith() вимагає точного початку рядка. Якщо в .ma команда має відступи або інше форматування, рядок може не бути знайденим..ma (Maya ASCII). Для .mb (binary) він не застосовний.