Душа_Чата
|
Сообщение #21
8 апреля 2023 в 16:23
|
Маньяк
2 |
1. Добавлена возможность настраивать скорость зачитывания соообщений чата, если такая опция включена. Для увеличения скорости используется зажатая клавиша Ctrl + LMB и для уменьшения Ctrl + RMB, при этом необходимо навести курсор на кнопку переключения типа режима оповещения. Демонстрация Код (1388 строк)Диапазон скорости настраивается здесь. // Define voice speed limits const minVoiceSpeed = 0.5; const maxVoiceSpeed = 2.5; Последний раз отредактировано 8 апреля 2023 в 16:24 пользователем Душа_Чата
|
Душа_Чата
|
Сообщение #22
8 апреля 2023 в 19:57
|
Маньяк
2 |
1. Сделаны некоторые оптимизации для повышения производительности. audioContext() теперь создаётся единожды и при вызове функции playBeep() не создаётся с нуля, а используется существущий, что не сказывается теперь на производительность и на артифактах звука. 2. Удалена логика преобразования частот в ноты. Теперь используются частоты, что сокращает излишние операции, да и с частотами всё вполне логично и понятно. Можно задавать конкретную чёткую частоту звука опираясь о характер звучания из услышенного на сайте https://www.rapidtables.com/tools/tone-generator.html3. Изменён тип Осциллятора (oscillator.type = "sine";), что создаёт более мягкое звучание, нежели режущее. 4. Добавлен дополнительный параметр delay для настраивания интервала между каждой проигрываемой частоты. 5. В функцию зачитывания текста голосом так-же добавился параметр настранивания громкости звука посредством (const volume). 6. В целом было много чего по мелочи переработано и оптимизировано. 7. Теперь при каждой перезагрузке страницы с чатом, когда в чате будет новое сообщение, которое ещё не зарегистрировано в "localStorage", звук проигрываться не будет, сигнализирующее о непрочитанном сообщении. Да и не нужно это. Пускай лучше оповещает когда уже загрузился и на момент присутствия появились новые сообщения. 8. Теперь 100% не будет ложных срабатываний о том, что пользователь вышел из чата, когда по факту не вышел, а на пару миллисекунд исчез из чата и появился. Код (1395 строк) Последний раз отредактировано 8 апреля 2023 в 19:59 пользователем Душа_Чата
|
Душа_Чата
|
Сообщение #23
8 апреля 2023 в 23:07
|
Маньяк
2 |
1. Добавлена возможность восстанавливать удалённые сообщения. Для этого нужно зажать Ctrl + навести курсор на кнопку (Hidden, Hide или Show) - кнопка показа и скрытия удалённых сообщений и затем кликнуть. "localStorage" данные удалятся и сообщения вновь покажутся. ДемонстрацияКод (1422 строк)
|
Душа_Чата
|
Сообщение #24
9 апреля 2023 в 04:10
|
Маньяк
2 |
1. Небольшое обновление, которое далось с большим усилием. Кнопка отображения удалённых сообщений теперь меняет своё имя на Restore в момент восстановления сообщений с зажатой клавишей Ctrl. Демонстрация Код (1426 строк) Последний раз отредактировано 9 апреля 2023 в 18:09 пользователем Душа_Чата
|
GOOD_THINGS_GO
|
Сообщение #25
9 апреля 2023 в 07:48
|
Гонщик
1 |
Считаю необходимым предупредить наборщиков, что автор темы - это тот самый молдавский спамерок, который годами засирал чат своими скриптами со спамом. Ставить его скрипты крайне небезопасно из-за его одиозной репутации.
|
Лазер
|
Сообщение #26
9 апреля 2023 в 09:34
|
Новичок
13 |
del Последний раз отредактировано 14 сентября 2024 в 01:11 пользователем Лазер
|
Рустамко
|
Сообщение #27
9 апреля 2023 в 12:22
|
Виртуоз
60 |
|
Душа_Чата
|
Сообщение #28
10 апреля 2023 в 00:42
|
Маньяк
2 |
1. Добавлена возможность задавать дополнительное свойство для отслеживаемых пользователей (pronunciation), чтобы некоторые ники корректно проговаривались голосом. 2. Теперь голос павла дополнительно назначается принудительно как дефолтный голос, а то видимо это и являлось причиной того, что голос иногда сбивался и проговаривала ирина. скрытый текст… // Define the users to track and notify with popup and audio const usersToTrack = [ { name: 'Даниэль', gender: 'male', pronunciation: 'Даниэль' }, { name: 'певец', gender: 'male', pronunciation: 'Певец' }, { name: 'Баристарх', gender: 'male', pronunciation: 'Баристарх' }, { name: 'madinko', gender: 'female', pronunciation: 'Мадинко' }, { name: 'Переборыч', gender: 'male', pronunciation: 'Переборыч' }, { name: 'Advisor', gender: 'male', pronunciation: 'Адвайзер' }, { name: 'Хеопс', gender: 'male', pronunciation: 'Хеопс' }, { name: 'Рустамко', gender: 'male', pronunciation: 'Рустамко' } ]; Код (1433 строк)
|
Душа_Чата
|
Сообщение #29
10 апреля 2023 в 14:09
|
Маньяк
2 |
Пришёл к финишному завершению с неразберихой правильного назначения голоса павла. При первом старте браузера и переходе на страницу чата, выдавалась ошибка, что невозможно назначить павла как дефолтный голос. Всё потому, что ещё не успелась инициироваться выборка самого голоса павла и зарегистрироваться в const voice. На помощь приходит event voicechanged, чтобы по итогу назначить дефолтный голос. Тем самым теперь ошибка пропадает. Челлендж. Видоизмените уже существующий код из прошлого поста с заменой данным кодом из под хайда. скрытый текст… // Wait for the 'voiceschanged' event to fire on the SpeechSynthesis object speechSynthesis.addEventListener('voiceschanged', () => { // Retrieve the list of available voices const voices = speechSynthesis.getVoices(); // Define the voice for text to speech as Pavel const voice = voices.find((voice) => voice.name === 'Microsoft Pavel - Russian (Russia)'); // Set the "default" property of the Russian voice to true to make it the default voice for the utterance voice.default = true; // Set the "lang" property of the utterance object to 'ru-RU' utterance.lang = 'ru-RU'; // Set the "voice" property of the utterance object to the Russian voice utterance.voice = voice; }); Последний раз отредактировано 10 апреля 2023 в 14:12 пользователем Душа_Чата
|
Душа_Чата
|
Сообщение #30
10 апреля 2023 в 23:35
|
Маньяк
2 |
Уже в который раз происходит борьба с ошибками голосового движка. То голос не найден, то голос ирины. Пришлось развернуть целую простыню логики, чтобы голос подгружался корректно. Теперь вроде как всё работает безотказно. Пока что так. Более длительное тестирование покажет, не будет ли пробиваться голос Ирины или же не будет в какой-то момент выскакивать ошибка, что голос не найдет. Браузер может просто иногда не успевать подгружать список доступных голосов на момент их запроса, а дальше следующие команды уже пытаются назначить другие настройки выбранного голоса из списка. Пришлось развернуть такие вот простыни где произошли видоизменения. скрытый текст… // Create a promise that will resolve when the list of available voices is populated const awaitVoices = new Promise(resolve => { // Create a speech synthesis object const synth = window.speechSynthesis; // Retrieve the list of available voices let voices = synth.getVoices(); // Define the voice for text to speech as Pavel let voice = voices.find(voice => voice.name === 'Microsoft Pavel - Russian (Russia)');
// If the voices list is empty, wait for it to populate if (voices.length === 0) { synth.addEventListener('voiceschanged', () => { voices = synth.getVoices(); voice = voices.find(voice => voice.name === 'Microsoft Pavel - Russian (Russia)'); // If the voice is found, continue with the initialization if (voice) { // Define the utterance object as a global variable const utterance = new SpeechSynthesisUtterance(); // Set the "lang" property of the utterance object to 'ru-RU' utterance.lang = 'ru-RU'; // Set the "voice" property of the utterance object to the Russian voice utterance.voice = voice; // Resolve the promise resolve({ synth, utterance, voices, voice }); } }); } else { // Define the utterance object as a global variable const utterance = new SpeechSynthesisUtterance(); // Set the "lang" property of the utterance object to 'ru-RU' utterance.lang = 'ru-RU'; // Set the "voice" property of the utterance object to the Russian voice utterance.voice = voice; // Resolve the promise resolve({ synth, utterance, voices, voice }); } });
// Define the default voice speed as a global variable let voiceSpeed = parseFloat(localStorage.getItem('voiceSpeed') || '1.5');
async function textToSpeech(text, voiceSpeed = voiceSpeed) { // Wait for the voices to be loaded const { synth, utterance, voices, voice } = await awaitVoices;
// Replace underscores with spaces const message = text.replace(/_/g, ' ');
// Set the text content of the utterance utterance.text = message; // Set the speed of the utterance utterance.rate = voiceSpeed; // Calculate the volume of the utterance based on the global volume value const dynamicVolume = volume * 6; // Set the volume of the utterance utterance.volume = dynamicVolume; // Set the voice of the utterance utterance.voice = voice;
// Speak the utterance synth.speak(utterance); } Код (1470 строк)
|
Душа_Чата
|
Сообщение #31
11 апреля 2023 в 10:41
|
Маньяк
2 |
1. Добавлена настройка тональности голоса. Для этого необходимо зажать клавишу Alt и кликами мыши LMB и RMB менять тональность в отрицательную и положительную сторону. Настройка скорости зачитывания так и остаётся с зажатой клавишей Ctrl + LMB и RMB. Так-же цвет для настройки скорости имеет зелёный цвет, а для настройки тональности красный. Демонстрация Код (1569 строк) Последний раз отредактировано 11 апреля 2023 в 13:25 пользователем Душа_Чата
|
Душа_Чата
|
Сообщение #32
11 апреля 2023 в 19:26
|
Маньяк
2 |
1. Внесены визуальные плюшки для настройки скорости воспроизведения голоса и его тональности. Был добавлен кастомный прогресс бар для улучшенного визуального понимания, куда есть уменьшать или увеличивать, так как имеется ограничительный минимальный и максимальный диапазон. Демонстрация Код (1709 строк) Последний раз отредактировано 13 апреля 2023 в 16:44 пользователем Душа_Чата
|
Душа_Чата
|
Сообщение #33
16 апреля 2023 в 21:40
|
Маньяк
2 |
1. Раньше инициация зачитывания сообщения происходила каждый раз, как только появлялось новое сообщение в чате, из-за чего очень длинные сообщения в чате, которые не успевали зачитаться до конца могли прочитаться дважды, так как за этот период, пока зачитывалось новое сообщение могло появиться два и более сообщений, что провоцировало на повторное зачитывание того же длинного ещё не зачитанного. Теперь при поступлении новых сообщений, каждое сообщение добавляется в очередь для зачитывания в // Create a Set to store the new messages const newMessages = new Set(); , поэтому зачитывание сообщений будет происходить последовательно, до тех пор, пока не закончятся накопленные сообщения из коллекции и до тех пор, пока в чат перестанут поступать новые сообщения, что провоцирует накопление новых сообщений в new Set(). Теперь вы не пропустите ни единого сообщения. Они прочитаются все последовательно независимо от длинны сообщений и интенсивности их отправки пользователями. 2. Добавлена возможность уведомлять о том, кто конкретно пишет в чат, но только для первого сообщения в чате одного конкретного пользователя. Допустим в чат написал певец. В первом предложении певца будет подобное оповещение. певец пишет: дальше основное его сообщение. Последующие его сообщения будут без преписки певец пишет до тех пор, пока его поток сообщений не прервёт другой пользователь, у которого аналогично первое сообщение будет иметь преписку, к примеру, вова пишет и далее его же второе и последующие сообщения будут без преписки. Очень удобно и не надоедливо, так как надоедливым было бы оповещение с препиской к каждому сообщению одного и того же пользователя, что могло бы вызывать раздражение за частую повторяемость. Это уведомление о том кто пишет необходимо в том случае, когда вы находитесь в другой вкладке и вам необходимо понимание о том, кто конкретно написал, а то ранее было не совсем понятно в 80% случаев кто что пишет. Была сплошная неразбериха. Код (1770 строк) Последний раз отредактировано 17 апреля 2023 в 00:29 пользователем Душа_Чата
|
Вова_10
|
Сообщение #34
17 апреля 2023 в 12:49
|
Супермен
37 |
Душа_Чата, а почему вы не можете сами создать скрипт для Тамперманки, чтобы получить эти самые расширенные возможности?
|
Душа_Чата
|
Сообщение #35
17 апреля 2023 в 14:48
|
Маньяк
2 |
1. Теперь весь код будет находиться в самом начале темы по ссылке СКАЧАТЬ где будет всегда актуальный код с гитхаба. Я пока не понимаю, как заставить прямую ссылку на js файл сделать так, чтобы она заставила стригерить tampermonkey на установку. Пока что меня перенаправляет на следующую вкладку с raw версией скрипта без всякой установки. Ну пока хоть так. Если кто знает, как решить эту проблему, дайте знать, а так я хоть избавляюсь от нужды постоянно загружать обновлённый код для каждого поста с обновлениями, да и в принципе скрипт никуда не потеряется, ведь он не залит на какое-то там временное хранилище кодозаливок, которые могут через пару лет внезапно исчезнуть из виду. Последний раз отредактировано 18 апреля 2023 в 00:56 пользователем Душа_Чата
|
Душа_Чата
|
Сообщение #36
17 апреля 2023 в 21:29
|
Маньяк
2 |
1. Добавлена функция автоматической прокрутки чата. Она рабочая и безотказная. Для прокрутки использвуется дополнительный параметр задающий момент срабатывания от 0 до 600px расстояния от нижней точки чата. Если расстояние свыше 600px, то прокрутка больше не будет срабатывать. Это необходимо для того, чтобы пользователь прокручивая чат вручную, имел возможность прочитать все интересующие его сообщения расположенные выше, которые были не прочитаны в следствии постепенного их накопления и на момент, когда в чат поступит одно и более сообщений оно автоматически не прокрутилось вниз, а дать спокойно прочитать сообщения. Для возобновления автоматической прокрутки чата, необходимо вернуть чат в прокрученном положении вниз или около того в диапазоне от 0 до 600px. Почему 600px спросите вы. Так как конвертируемая ютуб ссылка в iframe имеет высоту около 600px, чтобы чат прокручивался автоматически даже на таких высоких гигантах. Средствами функционала сайта такое увы не прокручивается. Последний раз отредактировано 18 апреля 2023 в 11:47 пользователем Душа_Чата
|
Душа_Чата
|
Сообщение #37
18 апреля 2023 в 00:44
|
Маньяк
2 |
1. Это наконец-то случилось. Теперь помимо оповещения о том, что такой-то пользователь написал в чат, ещё будет оповещение о том, что конкретно вам пишут. Тогда вы точно будете знать, что написали вам, а не просто написали сообщение в чат. Обычно когда пишут, то проговаривается как "Эксплоит пишет: сообщение", а когда будут обращаться то так "Эксплоит обращается: сообщение". Причём обращения будут всегда с префиксом, чтобы 100% не упустили по слуху, что вам пишут, а то как с обычными сообщениями ситуация, что первое сообщение с префиксом, а последюущие без префикса, если всё ещё от одного и того же пользователя, когда как обращения независимо от того пишет вам один и тот же пользователь больше чем одно сообщение или же обращения от разных пользователей. Префикс для обращений будет всегда присутствовать без всяческих условий. Обращения будут срабатывать если вдруг произойдёт совпадение из значений в массиве. Для себя я создал подобный список. Вы же можете себе создать более расширенный, зная точно, как обычно вас в чате упоминают. Так вы с большей гарантией не пропустите сообщение, где вас упомянули непосредственно по вашему действующему никнейму или же других возможных прошлых упоминаний. // Notify me if someone is addressing to me using such aliases const mentionKeywords = ['Душа_Чата', 'Душа', 'Панчер']; 2. Так-же добавлена приятная фишка только для дэтэктируемых пользователей из списока usersToTrack. Некоторые ники, такие как Explo1t читаются голосовым процессором как еахунтити. Теперь же будет читаться корректно как Эксплоит, так как вместо значения из свойства name будет использоваться свойство pronunciation. Им заменяется как и никнейм, так и содержимое сообщения. Для примера оригинальное сообщение. <Explo1t> я не в настроении сегодня разговаривать с мосье вовой. <Вова> Explo1t, но я настаиваю. В результате <Эксплоит> я не в настроении сегодня разговаривать с мосье вовой. <Вова> Эксплоит, но я настаиваю. Соответственно и проговаривание голосовым процессором будет корректным. 3. Незначительное изменение. Когда вы заполняете список возможных к вам обращений, то без разницы как вы пишите. Полностью прописными или заглавными буквами, или же первая буква каждого слова заглавная, а остальные прописные. Среагирует даже на такое (ДуШа_чаТА), если в массиве задано так (Душа_Чата) или так (душа_чата). Это избавляет от надобности плодить повторяющиеся написания во всеразличных буквенных регистрах. Только вариации разных слов. 4. Так-же было внесено изменение в характере звукового оповещения, когда режим beep. Обычные сообщения так и остались однотонным сигналом (500) герц, а сообщения обращения характерным с завышенными тонами (600, 800) герц. Опять же, вы можете менять герцовку каждого типа звучания или добавлять меньше или больше герцовых значений через запятую. Последний раз отредактировано 18 апреля 2023 в 11:52 пользователем Душа_Чата
|
Advisor
|
Сообщение #38
18 апреля 2023 в 01:49
|
Тахион
64 |
Вот, что значит, когда человек занят делом. Не то что там всякие телеграмовские чубаки. Отличная работа.
|
Душа_Чата
|
Сообщение #39
18 апреля 2023 в 14:42
|
Маньяк
2 |
1. Добавлена ярчайшая возможность сохранять следы о детектируемых зашедших и вышедших пользователях помимо всплывающих тултипов ещё и статичных штампов в виде плашек в чате, чтобы было понимание, когда нужный человек заходил и выходил на тот момент, покуда вы отсутствовали в чате. От вас не ускользнёт ни один персонаж пока вкладка находится в открытом состоянии. Не обязательно сидеть именно во вкладке и быть в ней активным. Можно сёрфить другие вкладки или другие браузеры, программы. Важно, чтобы открытая вкладка была в фоне где-то там сама по себе с открытым чатом. Как именно это выглядит, демонстрирую. Накапливаются статичные тултипы горизонтально, а не вертикально, чтобы не создавать нагромождение. Так-же тултипов умещается ровно столько, насколько вам позволяет ширина вашего чата и вашего монитора естественно. Последний раз отредактировано 18 апреля 2023 в 14:55 пользователем Душа_Чата
|
Душа_Чата
|
Сообщение #40
20 апреля 2023 в 00:26
|
Маньяк
2 |
1. Проделана колосальная работа по оптимизации и реорганизации кода. Повышена читабельность в некоторых местах, где было разбросано касамо одной фичи. Было собрано до кучи засчёт чего при исследовании кода нет необходимости долго проматывать вверх вниз в поисках зависимых блоков. 2. Кнопки из чата перекочевали в свою общую панель рядом с индикатором количества пользователей в чате на текущий момент. 3. Добавилась ещё одна кнопка, которая фильтрует реакцию на сообщения как для сигнального оповещения (beep) и голосового (voice), а именно добавлена кнопка (messages-mode), которая включает оповещение о всех сообщениях или же переключает оповещение только о личных сообщениях, когда вам нет необходимости читать все сообщения, но не хочется пропускать сообщения при обращении к вам. Как это выглядит. UPD Добавлен фон для кнопок, чтобы визуально смотрелось блочковенько. 4. Теперь (beep) и (voice) не срабатывают, когда вы отправляете сообщения в чат лично от себя. Нет в этом необходимости и снижается излишняя ненужная оповещаемость. Вам же нет необходимости себя проверять, что вы действительно отправили сообщение, ведь это и так визуально ясно. Вам нужен слуховой фидбэк от действий других пользователей. Последний раз отредактировано 20 апреля 2023 в 03:47 пользователем Душа_Чата
|