Представяне на TikTok Live Reader – първата българска добавка за NVDA
До момента в много публикации в блога на БГАсист сме ви представяли различни добавки за екранния четец NVDA. Днешната публикация е малко по-различна, понеже ще е от позицията ми на разработчик.
TikTok Live Reader е проект, с който се занимавам по-активно от близо 3 месеца и вече мога официално да ви го представя. Добавката е достъпна за изтегляне чрез официалния магазин на NVDA, с което стана първата българска добавка за този екранен четец.
Какво представлява TikTok Live Reader
Тази добавка може да се свързва с лайфове в TikTok и да извлича информация от тях в реално време. Използва библиотеката TikTokLive на езика Python, за да осъществява достъп до конкретен live stream. Поддържат се следните функции:
- Записване на извлечените данни в текстови файлове. Те се създават в Папка Документи\TikTok live.
- Запазва се информация за следните събития: коментари, нови последователи, гифтове, харесвания, споделяния, посетители, заявки за присъединяване към лайфа.
- Създава се файл със събития, в който могат да се записват няколко типа данни наведнъж.
- Предвидена е възможност за възпроизвеждане на звуци за избраните в настройките на добавката събития например при нов коментар, гифт и така нататък.
- Извличат се основни статистики за лайфа в отделен файл. В него се показва текущият брой зрители, посетителите, преминали през лайфа от началото на сесията, общият брой харесвания до момента, колко нови последователи е натрупал домакинът, събрани диаманти от началото на сесията.
- Създава се файл с топ класация на гифтърите. Те се подреждат от най-активния към този с най-малък принос. Определя се по брой изпратени диаманти към домакина.
- Налична е и класация за потребителите, които са харесали лайфа. Подреждат се на същия принцип като при гифтовете.
Благодарение на TikTok Live Reader всеки домакин или зрител може да получи необходимата му информация, без да използва външни инструменти. Събраните данни за лайфа се записват в текстови файлове, които се създават в папка Документи\Tiktok live. Те могат да бъдат преглеждани по-късно. Информацията също може да се прочита и чрез клавишни комбинации по време на лайф. Те ще бъдат описани по-долу.
Инсталация
За да инсталирате TikTok Live Reader, направете следното:
- Отворете менюто на екранния четец със клавишната комбинация NVDA+N.
- Влезте в „Инструменти“, след това в „Магазин за добавки“.
- Натиснете няколко пъти Control+TAB, за да се придвижите до раздела „Налични добавки“.
- В списъка потърсете TikTok Live Reader.
- Когато маркирате добавката, отворете контекстното меню с клавиша Applications и изберете „Инсталирай“.
- Изчакайте няколко секунди и проверете отново името на добавката в списъка. Ако нейното състояние е „Изтеглена, предстои инсталиране“, можете да натиснете клавиша Escape.
- Добавката ще се инсталира, след което е необходимо да рестартирате екранния четец.
Как се използва
TikTok Live Reader има собствен прозорец с настройки. Той се отваря с клавишната комбинация NVDA+Shift+Control+L. В него има 3 раздела:
Общи
Този раздел съдържа следните настройки:
- „Потребителско име“ – Тук се въвежда потребителското име на домакин на лайф без знак кльомба преди него.
- „Изчистване на файловете при стартиране“ – Изтрива съдържанието на текстовите файлове при включване на добавката.
- „Опростяване на потребителските имена“ – Тази опция има за цел да изчисти всичко излишно от имената на потребителите, които взаимодействат с лайфа. Нейната необходимост беше породена от това, че голяма част от потребителите в TikTok слагат в своите имена емоджита и всякакви други Unicode символи, които пречат при прочитане на името с екранен четец. Когато опцията е включена, от имената на потребителите се изчиства всичко излишно и в тях остават само букви, цифри и препинателни знаци.
- „Брой опити за свързване“ – Определя колко пъти добавката да опитва да се свърже с лайфа на зададения потребител.
Събития
Този раздел съдържа различни отметки. Чрез тях се определя кои данни да се записват във файла events.txt. За всяко събитие има отметка. Това могат да са коментари, последователи, гифтове, харесвания, заявки за присъединяване, споделяния и посетители. Налични са и следните допълнителни настройки:
- „Възпроизвеждане на звуци за избраните събития“ – При регистриране на някое от изброените, се възпроизвежда специфичен кратък звук например за нов коментар, последовател, гифт, харесване и така нататък. Функцията може да бъде включвана и изключвана с клавишната комбинация NVDA+Shift+Control+P.
- „Сила на звука“ – Този плъзгач определя колко да са силни звуците.
- „Научаване на звуците“ – Възпроизвежда тяхно описание, за да може потребителят да ги чуе предварително.
Автоматично изговаряне
Този раздел определя кои данни да се съобщават, когато функцията за автоматично изговаряне е включена. Тя се активира с клавишната комбинация NVDA+Shift+Control+S или чрез опцията „Автоматично изговаряне на избраните събития“. Когато тя е включена, само тогава се показват отметките за различните събития след нея. При поява на някое от тях, то ще бъде прочетено автоматично например „Нов последовател: Името на потребителя“.
Звуците за събития и съобщенията към тях се възпроизвеждат с пауза от една секунда помежду им. Съхраняват се във временни файлове, за да могат да бъдат докладвани по поредност при натоварени лайфове. Функцията за възпроизвеждане на звуци и тази за автоматично изговаряне са независими една от друга.
Когато са направени необходимите настройки, натиснете NVDA+Shift+Control+T. Клиентът на TikTok Live Reader ще се опита да се свърже с лайфа на зададения в настройките потребител. Информацията за успешно или неуспешно свързване се изговаря автоматично. Когато добавката докладва, че сте свързани, можете да използвате следните клавишни комбинации:
- Control+Shift+Стрелка надясно – следващ файл например Коментари, Събития, Последователи, Гифтове и така нататък.
- Control+Shift+Стрелка наляво – Предишен файл.
- Control+Shift+Стрелка надолу – Следващ елемент в текущия файл например коментар, харесване, споделяне.
- Control+Shift+Стрелка нагоре – Предишен елемент в текущия файл.
- Control+Shift+Home – Премества фокуса върху първия елемент от текущия файл например първият нов последовател.
- Control+Shift+End – Придвижване до последния елемент в текущия файл.
- NVDA+Shift+Control+V – Докладва колко зрители има в момента.
- Nvda+Shift+Control+S – Включва и изключва функцията за автоматично изговаряне на избраните в настройките събития.
- NVDA+Shift+Control+P – Включва и изключва звуците.
- NVDA+Shift+Control+R – Премахва съдържанието на текстовите файлове.
Натиснете NVDA+Shift+Control+T, за да прекратите текущата сесия на добавката. Можете да разгледате всички събрани данни във файловете, генерирани в папка Документи\TikTok live.
Някои особености
- При отваряне на настройките на добавката, изговарянето на събития и звуците временно се деактивират, ако са били включени. Записването на данни продължава на заден фон. Целта е да се взаимодейства спокойно с настройките, без излишно „бомбардиране“ със звуци и съобщения за събития.
- Ако има активна сесия и потребителското име в настройките е променено, след тяхното запазване добавката ще се опита да се свърже с новия потребител.
- Когато автоматичното изчистване на файловете при стартиране е изключено, в тях ще са останали данни от последния лайф. Ако искате да ги изчистите в началото на текущата сесия, натиснете NVDA+Shift+Control+R.
- Също така когато файловете не се изтриват автоматично, при рестарт на добавката тя се опитва да позиционира потребителя там, където последно е бил например върху ред 45 от файла с коментари. Позициите се съхраняват във временен файл, като целта на това е след загуба на връзката или необходимост от рестарт на екранния четец, придвижването във файловете да продължи от там, където последно е бил фокусът.
Можете да разгледате страницата на проекта в GitHub или да прочетете пълната документация на български.
Идея и мотивация
В началото на юли миналата година започнах от време на време да правя музикални лайфове в TikTok, в които свиря на синтезатор. В последствие се включи и моя приятелка, която се занимава с пеене. Но тогава, в началото се установи, че няма особено удобен начин да се прослушват коментарите.
TikTok Live Studio, софтуерът за излъчване чрез компютър не е чак толкова удобен за използване с екранен четец. Фокусът се губи при опит да се прослушват коментарите, освен това се съобщават и много излишни събития като присъединявания на хора, които просто преминават през лайфа. При разговор по темата с ChatGPT, той ми направи проста конзолна програмка, която извлича коментарите от даден лайф във реално време и ги записва в текстов файл. Тогава се запитах, няма ли как коментарите да се прочитат с клавишни комбинации, без да е необходимо всеки път да се отваря файлът? И дали от едно такова нещо не може да се направи добавка за NVDA? От там започна всичко…
Развитие и разработка
TikTok Live Reader премина през 10 пробни версии, докато се стигне до финален вариант. Той беше качен в магазина на NVDA на 20 февруари, а актуалната към момента версия 1.5 е достъпна от вчера. Добавката е преведена на български, английски и индонезийски.
За разработката на TikTok Live Reader съм използвал езиковите модели ChatGPT, Google Gemini и Claude. Последните варианти съм ги правил със средата за разработчици Antigravity с вграден изкуствен интелект.
Към днешна дата много от професионалните програмисти също работят по подобен начин. Дават инструкции на изкуствения интелект, тестват промените, изчистват грешки в кода и функционирането, след това пак отначало.
Малко за предишния ми опит
През 2016 успешно завърших курса Programing Basics в Софтуни, от който имам основни познания в програмирането. Изпитът включваше няколко практически задачи с писане на код, които трябваше да се решат за няколко часа. Първия път не бях удовлетворен от резултата, затова се явих втори път през февруари 2016. Изкарах над 550 точки от възможни 600, като се явих наравно с около 200 човека с нормално зрение, които не ползват екранен четец. Не са ми правени каквито и да било отстъпки при взимането на този изпит и според мен ръководството на Софтуни тогава не знаеше, че са имали незрящ курсист.
През ноември 2017, след като завърших Софийския Университет, реших да си продължа развитието в областта на програмирането, като разработя свой проект. За около 3 месеца активна работа Направих простичък настолен калкулатор за Windows, написан чрез езика C# и технологията „Windows Forms“ на Microsoft. Той поддържа основните числови операции събиране, изваждане, умножение, деление и изчисляване на процентна стойност. Резултатът се подава към активния в момента екранен четец и се копира в клипборда. Има и някои други функции, но за тях ще разберете повече, ако решите да го изпробвате. Оказа се, че приложението все още си работи нормално, въпреки че съм публикувал неговия последен вариант преди 8 години. Можете да го изтеглите от страницата на проекта в GitHub.
Финални уточнения
От 2018 година нататък животът ме отвя в други области, пак свързани с технологиите. Най-значимата промяна беше, че започнах работа в БГАсист, където и до момента се чувствам на мястото си. Тогава смятах, че за да се развиваш пълноценно в програмирането, трябва едва ли не да се посветиш изцяло на него и да си зарежеш всичко останало, включително и личния живот. Тогава такава перспектива не ме блазнеше и затова се отдръпнах от тази област.
От днешна гледна точка с навлизането на изкуствения интелект и неговото развитие, ситуацията се промени доста. Той в много случаи може да свърши досадната и трудоемка работа по ръчното писане на кода. Но изкуственият интелект има нужда да бъде постоянно напътстван, контролиран и да му се дават конкретни, точно формулирани инструкции. Трябва да имаш много ясна идея какво искаш да постигнеш, как да работи на заден план, как да се държи в различни ситуации. Моето лично усещане е, че предстоят интересни промени с усъвършенстването на изкуствения интелект, но той винаги ще има нужда от компетентни и осъзнати хора, които да го насочват и коригират.
Очаквайте още интересни материали тук, както и на страницата ни във Facebook. Можете да разгледате и продуктите в нашия електронен магазин.
