Помогите оживить кнопку со скриптом на Питоне
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Автоматизация Total Commander

#1: Помогите оживить кнопку со скриптом на Питоне Author: dumi PostPosted: Mon Jan 22, 2024 23:14
    —
Попросил ИИ написать скрипт для кнопки для Тотала и он мне его написал (честно говоря, изумил! ...). Он предложил Питон, а я не возражал, так как равно ни языков подходящих, ни глубин устройства Тотала не знаю, и разбираться особо не хочу - я не программист. Но заказанная функция, между тем, меня действительно очень и очень интересует.
Сценарий вкратце: 1) В текущей директории найти и запомнить выделенные файлы со значениями их атрибутов дат (съемки, создания и модернизации); 2) Открыть штатную форму "Свойства"; 3) После закрытия формы "Свойства" (по нажатию пользователем ОК), по списку в памяти восстановить значения дат в файлах.
Сыр-бор из-за того, что после сохранения редактирования тегов в форме "Свойства", значение даты модернизации меняется на текущую, что категорически неприемлемо (теги можно менять оптом сразу в большом количестве файлов).
Я не программист, но для себя бывало кое-что кое-в-чем программировал. Поэтому скрипт по смыслу показался мне в общем понятным, и с точки зрения бизнес-логики правильным. Но ... не работает Sad ; При нажатии кнопки в Тотале, что-то черное мигает (вероятно, это окно самого Питона), и больше ничего не происходит. Не мог бы кто-н глянуть? Может даже не сильно много нужно подправить, чтобы заработало? чем черт (ИИ) не шутит ...
Версия Тотала - 9.21а (вряд ли важно, но ...)

 Код который написал ИИ:

Добавлено спустя 24 минуты:
dumi wrote:
# Открываем форму "Свойства" Total Commander
# Для этого используем команду wcmicons.exe с параметром 100
# Эта команда должна быть в папке с Total Commander
# Если нет, то нужно указать полный путь к ней
subprocess.run(["wcmicons.exe", "100"])

Блин, только отправил пост, осенило проверить наличие этого файла. Так его нет Sad Есть только "wcmicons.dll" ... Попробовал заменить в коде на "dll", но как и следовало ожидать, не работает. И что же делать? Как открыть форму "Свойства"?
Добавлено спустя 1 час 19 минут:
Объяснил ИИ ситуацию и попросил переписать этот фрагмент кода под мою версию ТС. И он переписал:
Code:
# Открываем форму "Свойства" Total Commander
# Для этого используем команду rundll32.exe с параметрами wcmicons.dll и 100
# Эта команда должна быть в папке с Total Commander
# Если нет, то нужно указать полный путь к ней
subprocess.run(["rundll32.exe", "wcmicons.dll,100"])

Но все равно, не работает, визуально ничего не изменилось Sad


Last edited by dumi on Fri Feb 02, 2024 13:25; edited 1 time in total

#2:  Author: CaptainFlintLocation: Москва PostPosted: Wed Jan 24, 2024 07:06
    —
dumi
Главная проблема тут в том, что ИИ не существует. То, что из каждого утюга обзывают искусственным интеллектом, на самом деле является системой генерации грамматически адекватных текстов на естественных языках. Эта система просто поштучно выбрасывает одно слово за другим, выбирая те, которые, как ей кажется, лучше всего состыкуются с предшествующим текстом. В итоге фразы получаются грамматически корректными, но использовать их как базу знаний чревато. И уж тем более это не инструмент создания программ. Иногда он может сгенерировать что-то рабочее или полурабочее, так как в обучающую подборку, видимо, попали в том числе и программистские сайты. Но предполагать, что этот генератор автоматически "додумает" за автора техническое задание и сгенерирует код для такой узкоспециальной ситуации — по меньшей мере наивно. Я уж не говорю о том, что если есть желание воспользоватся скриптом, то хорошо бы для начала разобраться, как его положено запускать и как смотреть консольный вывод, куда попадают в числе прочего добавленный автором print() и сообщения об ошибках. (Обычно для этого открывают отдельную консоль и работают в ней.)

Что касается этого скрипта, можно даже не пытаться с ним что-то делать. Он совершенно безнадёжен.
Во-первых, он банально синтаксически некорректен: все блоки в питоне обязаны иметь отступы, а здесь их нет.
Во-вторых, "выделенными файлами" господин бредогенератор обозвал вообще все имеющиеся в текущем каталоге JPG- и PNG-файлы (что особенно мило, учитывая, что EXIF-данных в PNG не бывает). И вообще, во всём коде нет ни единой инструкции, которая хоть как-то взаимодействовала бы с Тоталом. Скрипт даже не подозревает о существовании такой программы, если не считать случайное упоминание wcmicons, да и то в вопиюще неадекватном контексте.
В-третьих, то, что называется открытием диалога "Свойства" — это просто полный бред. Эта команда (что первый вариант, что второй) не может работать ни при каких условиях. Диалог открывается совершенно иначе, и более того, даже невозможно сказать, как это делать правильно, потому что в постановке задачи не уточняется, надо его открывать поочерёдно для каждого файла или один для всех выделенных файлов.
В-четвёртых, в задании речь шла о восстановлении даты-времени файла, а скрипт пытается восстановить EXIF-данные (впрочем, не могу сказать, успешно ли; я с модулем exif не работал, а проверять не вижу смысла).

Короче говоря, чем пытаться править это нагенерённое убожище, проще и быстрее делать скрипт с нуля. Только для этого всё-таки надо внятно и чётко расписать, что и как должно работать, и тогда есть шанс, что кто-нибудь из участников напишет подходящий скрипт.

#3:  Author: dumi PostPosted: Thu Jan 25, 2024 16:31
    —
CaptainFlint wrote:
dumi
Главная проблема тут в том, что ИИ не существует.
Тут это не главная проблема. Не говоря о том, что под "ИИ" многие подразумевают разные вещи и поэтому можно увязнуть в трактовании того, что имел ввиду CaptainFlint (кстати, догадываюсь, что в несколько иной формулировке, я бы с ним согласился). В моем посте "ИИ" это лишь специфика, и мне казалась довольно любопытная, моего подхода к решению вполне ординарной для данного ресурса задачи, но прежде совершенно не доступной мне для решения никакими традиционными способами. Да, кроме того, как минимум, я рассматриваю это как некий эксперимент.
Возвращаясь к теме старттопика. Форма "Свойства" открывается один раз и при закрытии сохраняет одни и те же значения отредактированного поля (например, тегов) во все выделенные файлы (у которых имеется такое свойство). Другими словами - речь о групповом "тегировании" файлов. Так эта форма сейчас работает сама по себе - ничего тут, кроме её открытия, программировать не надо.
Но при этом происходит одно отрицательное побочное "явление" - изменяется дата последнего редактирования файлов. Весь сыр-бор ради исправления этого нестерпимого изъяна.

#4:  Author: dumi PostPosted: Sat Jan 27, 2024 21:56
    —
Полнофункциональная работающая первая часть скрипта:
 Скрипт:
Некоторые форумчане поспешили высказаться (по другим каналам) весьма скептически о достоинствах представленного в старттопике кода ("говнокода"), вышедшего из под "пера" ИИ, и о бессмысленности затеи воспользоваться ИИ для компенсации собственного невежества (полного и бесспорного) для решения обозначенной выше (разумется бездарно) задачи. Вместо того, чтобы сначала в надлежащем порядке трепетно поизучать "матчасть". Предлагаю оппонентам сравнить исходный и конечный тексты скрипта, и убедиться, что не так уж сильно они различаются. Т.е., не такую уж чушь несёт ИИ (чем бы оно ни было). Кроме того, предлагаю сопоставить варианты разработки для неофита: 1) "необходима отладка" или 2) "начать с самого начала" (не представляя в какой стороне и на каком отдалении оно находится)...– Особенно в контексте, вероятно, разовой потребности.

Last edited by dumi on Fri Feb 02, 2024 13:33; edited 1 time in total

#5:  Author: dumi PostPosted: Thu Feb 01, 2024 21:49
    —
Задача решена. Скрипт разделил на две части / две кнопки: 1) Сохранить даты (в файл ".json"); 2) Восстановить даты. Тем самым избавился от вопроса открытия формы "Свойства" из скрипта и ожидания скриптом закрытия формы пользователем.
Недостаток решения - Питон, который пришлось специально устанавливать в систему. Несколько расточительно ради одного маленького прибамбаса. Но когда начал делать, было еще любопытно, что за зверь такой - Рython, про который нынче из каждого утюга ... Слышал название уж лет 20 назад. Но раньше он был на периферии ..., а сейчас - какая-то Питономания ... Mr. Green

Тему можно закрыть, но я не знаю как ...



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group