Комментарии 53
Надо добавить не ИИ функции. Например исправление раскладки (на случай если набрал что то не в той раскладке и лень переписывать)
ИИ переводчик очень творчески к процессу подходит Ж)

У меня Caramba Switcher под это дело стоит, и он отлично справляется с этой задачей. Я пробовал, кстати, в промпт добавлять строчку про исправление неправильной раскладки, но что-то мне не понравились результаты (кстати, как раз из-за того, что ИИ очень творчески к процессу подходит)))
Omg, я юзаю Punto Switcher уже 20 (!!!) лет. Переключаю раскладку одним нажатием Caps Lock и жутко страдаю, когда на других компах это надо делать по-другому.
Последнее время он стал как-то подрагивать - видно, что Яндекс не занимается его развитием. Но мне и в голову не приходило, что есть и другие свитчеры. Спасибо, добрый человек, что подсказал Карамбу!😁
Исправлять раскладку с помощью запроса в гпт?
Это делается гораздо проще без гпт.
Я кажется видел реализацию пунто свитчера, или чего то похожего, на AutoHotkey. Там встроенный скриптовый язык позволяет писать полноценные программы. Возможно тебе стоит использовать его вместо питона.
https://forum.script-coding.com/viewtopic.php?id=7186
Вот, пользуюсь данным скриптом. Почему то PuntoSwitcher мне не зашел, исправлял иногда не то что нужно. А вот самому исправлять с помощью скрипта - вполне. Плюс настраивай как пожелаешь, добавляй свой функционал и горячие клавиши. Красота.
По-моему, светить гуглу всё содержимое буфера обмена на своей личной ЭВМ плохая идея. Например, там могут быть пароли.
Собрал .exe (http://vetaone.site/ClipGen/ClipGen.zip) У меня запускается и работает без ошибок, но у меня и через консоль тоже запускается, и тоже всё работает, кстати, добавил в репозиторий ещё requirements.txt может поможет
А можно уточнить какая у вас версия Python? А то на Github написано 3.8, а сайте https://pypi.org/project/google-generativeai/0.1.0/, что требуется не ниже 3.9

Поделюсь опасениями. Я в 2011 году, когда один из сайтов переехал на другой домен, не помню уж по какой причине (вроде, там за домен или хостинг забыли заплатить, а у меня были ссылки в файлике на отдельные странички) набросал вот такой скрипт, как раз с заменой содержимого буфера обмена "на лету":
var tStop=new Date;tStop.setSeconds(tStop.getSeconds()+30);
with(WScript.CreateObject("AutoItX3.Control"))while(tStop-(new Date)>0){ch=false;
var newURL=repl(ClipGet(),/((?:forum\.|www\.)?script-coding\.)info/gi,'$1com');
newURL=repl(newURL,/p10903\.clients\.m-10\.ru/gi,'forum.script-coding.com');
if(newURL && ch)ClipPut(newURL);
Sleep(500);
}
var i=2;with(new ActiveXObject("WScript.Shell"))while(i--)Run('cmd /c @echo ',0,true);
function repl(s,re,rs){if(re.test(s)){ch=true;return s.replace(re,rs)};return s}
С тех пор к подобными подходам есть некоторый интерес. Результаты наблюдений за ситуацией на настоящий момент такие: оказалось, что подобная техника используется злоумышленниками при краже денег с криптокошельков. То есть пользователь копирует в буфер обмена одно, а незаметно для него туда вставляется другое, в результате деньги уходят на сторону. Я не говорю, что использовать автоматическую модификацию буфера обмена нельзя, но отношусь теперь к подобного рода вещам с чрезвычайной настороженностью. Ни к чему не призываю, просто информирую...
Да, видел примеры с подменой криптокошельков — но мой код открыт.
Я не говорю, что использовать автоматическую модификацию буфера обмена нельзя
А тут я не смог придумать более простой логики работы программы, чтобы не приходилось переключаться или что-то перетаскивать. Работа напрямую с буфером обмена — самое простое и элегантное решение, как мне кажется. Код начинает работать в любой программе, от блокнота до Photoshop, и я просто не представляю, чем это можно заменить.
Я всегда рад за людей, если у них всё получается и нет проблем. Только вот что делать тем, у кого не запускается? Я так понимаю, что возможно не все зависимости совпадают.

Я так понимаю, что возможно не все зависимости совпадают.
Да, скорее всего, сейчас поправлю requirements.txt. Проверил — у меня другая версия установлена.
PS C:\Projects\Work\Scripts\ClipGen> pip show google-generativeai
Name: google-generativeai
Version: 0.8.4
Summary: Google Generative AI High level API client library and tools.
Home-page: https://github.com/google/generative-ai-python
Author: Google LLC
Author-email: googleapis-packages@google.com
License: Apache 2.0
Location: C:\Python313\Lib\site-packages
Requires: google-ai-generativelanguage, google-api-core, google-api-python-client, google-auth, protobuf, pydantic, tqdm, typing-extensions
Required-by:
PS C:\Projects\Work\Scripts\ClipGen>
Спасибо, интересный проект.
У меня, кстати, Ваши зависимости не компилировались, поменял на последние версии - все заработало.
customtkinter==5.2.2
pyperclip==1.9.0
google-generativeai==0.8.4
pywin32==310
pynput==1.8.0
Pillow==11.1.0
Ну, как всё... При запуске из командной строки "python.exe main.py" при выходе из программы python.exe остается в пямяти, можно только убить из TaskManager...
поменял на последние версии
Я же правильно понимаю, что я могу просто ваши версии подставить в свой файл? И у людей будет меньше проблем с запуском?
можно только убить из TaskManager.
Да, спасибо, я это поправлю. Интерфейс доделал в последнюю очередь, а раньше была чисто консольная версия — с ней не было таких проблем.
А как api key получить из России, "Region not supported."
Спасибо за проект!
К сожалению, API Gemini в РФ без ухищрений недоступно. Но можно взамен по API подключить бесплатный Mistral Large. Или локально запустить Gemma-3/Qwen2.5. Результат будет не сильно хуже Gemini.
И я был удивлен, узнав из статьи, что Vimeo не заблокирован.
Ответы по картинкам будут сильно заметно хуже
Здравствуйте! Я тоже столкнулся с этой ошибкой, хотя уже давно сижу под VPN (странно, torrents качаются, через браузеры прекрасно всё работает и сам Gemini API я получил без проблем - то есть весь комп считает, что я не в РФ, а этот скрипт не обманешь, блин...). Пожалуйста, чуть подробней распишите (если не сложно, само собой!), как именно мне настроить альтернативные LLM (какие строки в коде и как поправить). Я только начал изучение Python, но именно этот проект меня очень заинтересовал, и хочется довести до конца его подключение. Спасибо!
По Python не подскажу. Но план-минимум правок такой:
Заменить API endpoint на:url = "
https://api.mistral.ai/v1/chat/completions
"
Model = "mistral-large-latest"
api_key = "your-api-key"
Заменить requestBody на мистралевский по их докам (deepseek подскажет как поменять), добавить паузу между запросами секунд 5. Возможно, внести небольшие правки в функцию разбора ответа.
И да, Gemini из РФ можно пользоваться, но это другая история.
Вообще, я сам о подобной идее думаю но пока руки не дошли. Порой надо работать с текстом, переводчиком и и и. В идеале хочу создать некоторого условного помощника который работает с текстом и имеет небольшой контекст и легковесно что то рендерит (вместо вставки, например) и выполняет ряд команд.
Основная лично моя загвоздка в выборе провайдера модели - бесплатные имеют лимит (и порой слишком маленький), либо качество слабое - а платить, хоть и копеечку - ну такое себе за то, что можно сделать в браузере бесплатно, например через тот же perplexity. Думаю о мистрале, вроде даром отдают апи на ряд моделей, но как будет с русским и качеством в целом - ещё вопрос.
Единственное что, мне кажется использование буфера как такового это не лучше решение. Лучше всего работать с текущим выделенным текстом (полагаю, выделение текста плюс минус должно быть стандартизировано в ос в разных юи фреймворках) - можно случайно скопировать или наоборот, плохо прожать кнопку копирования(особенно если клавиатуре не первый год уже) и отправить что то, что не следует отправлять. Но это уже на моё имхо...
И гугл и мистраль дают нахаляву столько сколько мало кто вынести может. К гуглу например можно сделать 1500 запросов размером 300т символов в сутки, либо 1500 запросов на перевод картинок или звуков в текст.
У мистраля немного иначе но тоже очень много.
Качество у гугла одно из лучших если верить рейтингу с lmarena. У мистраля похуже но есть уникальные фишки, например может очень быстро и много переводить сканы пдф в текст.
Не знал, спасибо за информацию. Раньше (года так пол - год назад) было меньше запросов если я все верно находил. Но уже сомневаюсь.
Про качество не знаю - первые версии были кривые как сами знаете что. Сейчас ситуация лучше? Смотреть бы не по рейтингам а отзывы настоящих людей...
У меня такая штука вместе с мышкой шла.
Неплохо, надо ещё добавить чтобы с текстом уходил скриншот экрана и может быть название активной программы. и по ним он сам вычислял что хочет пользователь. Чтобы не помнить кучу клавиш. Нужно прописать в юзер промте для каких программ что требуется. Или даже привязку к сайту. (Желательно один монитор где мышь, а не все)
Оу, прикольная идея )) Но у меня кейсов таких нет, я в телеграме или в мессенджерах (ну, или вот тут, в комментариях, когда дописываю сообщение) уже на автомате нажимаю Ctrl+A + Ctrl+F1, и она исправляет все ошибки, знаки препинания и т. п.
Сегодня делал сайт в Figma. Просто в тексте просишь: «Дай символ рубля или эмодзи часов», — она удаляет запрос и вставляет в текст то, что нужно. Но это я могу где угодно попросить, что в Telegram, что в Photoshop, например.
Чтобы не помнить кучу клавиш
Но тогда придётся какой-то очень строгий и сильный промпт к каждому запросу отправлять + скрин экрана (где, скорее всего, будет плюсом очень много ненужной инфы, которая пойдёт плюсом к этому запросу). А тебе нужно всего лишь три слова на английский перевести. Ну, в общем, идея прикольная и даже не слишком сложно реализуемая — до момента отправки всего этого в gmini, т. к. больше чем уверен, что она на половину инструкций просто болт положит. За всё время работы с ней я понял: чем короче промпт, тем меньше вероятности, что что-то пойдёт не так )))
Контрибьютерство приветствуется? Попробую перетащить на линукс, макос не обещаю, ибо с этой системой не работал
В любом случае, крайне классный и перспективный проект!
Здравствуйте! Очень интересный проект, спасибо. Прошу помощи. Я нуб в Python и Git, но очень хочу разобраться. Вроде всё сделал по инструкции, но при запуске main.py получил такую ошибку:
Traceback (most recent call last):
File "C:\Users\User\documents\clipgen\main.py
", line 49, in
current_config = list(language_configs.values())[0]
~~~~~~~~~~~~~~~~~~~~~~~~~~~
^^^
IndexError: list index out of range
В чём может быть дело?
И еще. Не сразу нашёл файлы config_en.json и config_ru.json. После успешного клонирования с Git они обнаружились здесь: ...\ClipGen\dist\ClipGen.zip. Нужно ли их разархивировать и по какому пути они должны в итоге располагаться? Спасибо.
по какому пути они должны в итоге располагаться?
Рядом с main.py, в этом же каталоге. Ошибка, судя по всему, из-за того, что этих файлов нет. Я обновлю их на гитхабе, немного запутался, как он работает (это просто мой первый проект, который я там выложил, и пока всё очень сложно))). Надо привыкнуть.
Главное пароль или другую важную информацию не копировать.
Отличная идея насчет проверки орфографии по выделению текста и шорткату! Прочитал и загорелся это внедрить у себя. Но не хотелось городить огород с исполняемыми файлами, да и функциональность мне вся не нужна, а также все равно поднят n8n серверок для no-code автоматизаций. Так что решил просто внедрить эту идею, и уже все работает, прошло всего 2 часа, просто шикарно и удобно, спасибо!
У меня получилось так реализовать:
(AutoHotKey скрипт) <--> (Webhook n8n - Ai Agent -- Respond to Webhook).
Скрипт мне написал ChatGPT с небольшой помощью Claude.ai.
Ноды n8n помог довести до ума тоже ChatGPT.
если кому нужно, код для AHK:
!1:: {
; Clear the clipboard
A_Clipboard := ""
; Copy the selected text
Send("^c")
; Wait for the clipboard to contain data
if !ClipWait(2) {
MsgBox("Не удалось скопировать текст. Убедитесь, что текст выделен.")
return
}
; Get the clipboard content
text := A_Clipboard
; Check if text was copied
if (text = "") {
MsgBox("Нет скопированного текста.")
return
}
; Prepare JSON data - escape quotes and backslashes in the text
;escapedText := StrReplace(StrReplace(text, "\", "\\"), Chr(34), "\" . Chr(34))
;jsonData := "{" . Chr(34) . "text" . Chr(34) . ":" . Chr(34) . escapedText . Chr(34) . "}"
; Предполагаем, что переменная text уже содержит исходный текст
; Экранируем обратный слэш:
escapedText := StrReplace(text, "\\", "\\\\")
; Экранируем двойные кавычки:
escapedText := StrReplace(escapedText, Chr(34), "\\" . Chr(34))
; (Дополнительно можно экранировать переводы строк, если требуется)
escapedText := StrReplace(escapedText, "`n", "\\n")
escapedText := StrReplace(escapedText, "`r", "\\r")
; Формируем JSON-строку:
jsonData := "{" . Chr(34) . "text" . Chr(34) . ":" . Chr(34) . escapedText . Chr(34) . "}"
; Create HTTP request
try {
; Create HTTP object
http := ComObject("WinHttp.WinHttpRequest.5.1")
; Open connection
http.Open("POST", "your-webhook-placeholder", false)
; Set request header
http.SetRequestHeader("Content-Type", "application/json")
; Send the request
http.Send(jsonData)
; Check status code
statusCode := http.Status
if (statusCode != 200) {
MsgBox("Ошибка сервера. Код статуса: " . statusCode . "`nОтвет: " . http.ResponseText)
return
}
; Get the response
newText := http.ResponseText
; Check if response was received
if (newText != "") {
; Set the clipboard to the new text
A_Clipboard := newText
Sleep(100)
Send("^v")
} else {
MsgBox("Получен пустой ответ от сервера. Проверьте настройки n8n.")
}
} catch as e {
MsgBox("Ошибка при отправке запроса: " . e.Message)
}
}
# В файле ClipGen.py замените метод create_log_handler следующим кодом:
# В файле ClipGen.py, изменим метод update_color:
Что-то мне подсказывает, что автор не брезговал помощью Gemini, когда писал этот код...
Что-то мне подсказывает, что вы не прочитали первые четыре строчки моего текста. И в этот раз не Gemini, а сборная солянка из нейронок.
я по профессии графический дизайнер, а не программист. Но это не мешает мне создавать полезные инструменты с помощью ИИ.
Как я научил буфер обмена думать