Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Помогите оживить кнопку со скриптом на Питоне

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
dumi



Joined: 26 Feb 2023
Posts: 7

Post (Separately) Posted: Mon Jan 22, 2024 23:14    Post subject: Помогите оживить кнопку со скриптом на Питоне Reply with quote

Попросил ИИ написать скрипт для кнопки для Тотала и он мне его написал (честно говоря, изумил! ...). Он предложил Питон, а я не возражал, так как равно ни языков подходящих, ни глубин устройства Тотала не знаю, и разбираться особо не хочу - я не программист. Но заказанная функция, между тем, меня действительно очень и очень интересует.
Сценарий вкратце: 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
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Wed Jan 24, 2024 07:06    Post subject: Reply with quote

dumi
Главная проблема тут в том, что ИИ не существует. То, что из каждого утюга обзывают искусственным интеллектом, на самом деле является системой генерации грамматически адекватных текстов на естественных языках. Эта система просто поштучно выбрасывает одно слово за другим, выбирая те, которые, как ей кажется, лучше всего состыкуются с предшествующим текстом. В итоге фразы получаются грамматически корректными, но использовать их как базу знаний чревато. И уж тем более это не инструмент создания программ. Иногда он может сгенерировать что-то рабочее или полурабочее, так как в обучающую подборку, видимо, попали в том числе и программистские сайты. Но предполагать, что этот генератор автоматически "додумает" за автора техническое задание и сгенерирует код для такой узкоспециальной ситуации — по меньшей мере наивно. Я уж не говорю о том, что если есть желание воспользоватся скриптом, то хорошо бы для начала разобраться, как его положено запускать и как смотреть консольный вывод, куда попадают в числе прочего добавленный автором print() и сообщения об ошибках. (Обычно для этого открывают отдельную консоль и работают в ней.)

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

Короче говоря, чем пытаться править это нагенерённое убожище, проще и быстрее делать скрипт с нуля. Только для этого всё-таки надо внятно и чётко расписать, что и как должно работать, и тогда есть шанс, что кто-нибудь из участников напишет подходящий скрипт.
_________________
Почему же, ё-моё, ты нигде не пишешь "ё"?
Back to top
View user's profile Send private message
dumi



Joined: 26 Feb 2023
Posts: 7

Post (Separately) Posted: Thu Jan 25, 2024 16:31    Post subject: Reply with quote

CaptainFlint wrote:
dumi
Главная проблема тут в том, что ИИ не существует.
Тут это не главная проблема. Не говоря о том, что под "ИИ" многие подразумевают разные вещи и поэтому можно увязнуть в трактовании того, что имел ввиду CaptainFlint (кстати, догадываюсь, что в несколько иной формулировке, я бы с ним согласился). В моем посте "ИИ" это лишь специфика, и мне казалась довольно любопытная, моего подхода к решению вполне ординарной для данного ресурса задачи, но прежде совершенно не доступной мне для решения никакими традиционными способами. Да, кроме того, как минимум, я рассматриваю это как некий эксперимент.
Возвращаясь к теме старттопика. Форма "Свойства" открывается один раз и при закрытии сохраняет одни и те же значения отредактированного поля (например, тегов) во все выделенные файлы (у которых имеется такое свойство). Другими словами - речь о групповом "тегировании" файлов. Так эта форма сейчас работает сама по себе - ничего тут, кроме её открытия, программировать не надо.
Но при этом происходит одно отрицательное побочное "явление" - изменяется дата последнего редактирования файлов. Весь сыр-бор ради исправления этого нестерпимого изъяна.
Back to top
View user's profile Send private message
dumi



Joined: 26 Feb 2023
Posts: 7

Post (Separately) Posted: Sat Jan 27, 2024 21:56    Post subject: Reply with quote

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

Last edited by dumi on Fri Feb 02, 2024 13:33; edited 1 time in total
Back to top
View user's profile Send private message
dumi



Joined: 26 Feb 2023
Posts: 7

Post (Separately) Posted: Thu Feb 01, 2024 21:49    Post subject: Reply with quote

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

Тему можно закрыть, но я не знаю как ...
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group