TikTok Live Reader
Тази добавка може да се свързва с лайфове в TikTok и да извлича информация от тях в реално време. Използва библиотеката TikTokLive на езика Python, за да осъществява достъп до конкретен live stream. Поддържат се следните функции:
- Записване на извлечените данни в текстови файлове. Те по подразбиране се създават в Папка Документи\TikTok live.
- Възможност за архивиране на всички изминали лайф сесии в подпапка Backups. Файловете се подреждат в подпапки по дата, час и домакин.
- Запазва се информация за следните събития: коментари, нови последователи, гифтове, харесвания, споделяния, посетители, заявки за присъединяване към лайфа.
- Създава се файл със събития, в който могат да се записват няколко типа данни наведнъж.
- Предвидена е възможност за възпроизвеждане на звуци за избраните в настройките на добавката събития например при нов коментар, гифт и така нататък.
- Извличат се основни статистики за лайфа в отделен файл. В него се показва текущият брой зрители, посетителите, преминали през лайфа от началото на сесията, общият брой харесвания до момента, колко нови последователи е натрупал домакинът, събрани диаманти от началото на сесията.
- Създава се файл с топ класация на гифтърите. Те се подреждат от най-активния към този с най-малък принос. Определя се по брой изпратени диаманти към домакина.
- Налична е и класация за потребителите, които са харесали лайфа. Подреждат се на същия принцип като при гифтовете.
Благодарение на TikTok Live Reader всеки домакин или зрител може да получи необходимата му информация, без да използва външни инструменти. Събраните данни за лайфа се записват в текстови файлове, които се създават в папка Документи\TikTok live. Те могат да бъдат преглеждани по-късно. Добавката извлича в отделни файлове следните типове данни:
- comments.txt - В този файл се добавят всички коментари, засечени по време на лайфа. Те са придружени с дата и час.
- followers.txt - Регистрират се потребителите, които са последвали домакина по време на текущата сесия на добавката.
- gifts.txt - Тук се записват всички подаръци, получени от домакина на лайфа. Докладва се кой потребител колко подаръка от даден вид е изпратил, заедно с датата и часа.
- likes.txt - В този файл се показва кой, кога и по колко пъти е харесал лайфа.
- requests.txt - Регистрира всички заявки за присъединяване, отправени към домакина.
- shares.txt - Записва потребителите, които са споделили лайфа заедно с дата и час.
- stats.txt - Показва текущият брой зрители, колко нови последователи е събрал домакинът, всички харесвания на лайфа, колко посетители са минали по време на текущата сесия, общият брой събрани диаманти.
- top gifters.txt - Съдържа класация на потребителите, изпратили подаръци в лайфа, подредени от най-активния към този с най-малко гифтове.
- top likes.txt - Същата логика, само че за харесванията.
- visitors.txt - В този файл се записват всички посетители, минали през лайфа по време на текущата сесия на добавката, заедно с дата и час.
- events.txt - При навигация с клавиатурата този файл е разположен между коментарите и последователите. В него могат да се записват различни типове събития, определени в настройките на добавката. Идеята е лесно да се проследяват няколко типа данни на едно място - коментари, последователи, гифтове, харесвания, заявки за присъединяване, споделяния и посетители.
Настройки
TikTok Live Reader има собствен прозорец с настройки. Той се отваря с клавишната комбинация NVDA+Shift+Control+L. В него има 4 раздела:
Общи
Този раздел съдържа следните настройки:
- Потребителско име - Тук се въвежда потребителското име на домакин на лайф без знак кльомба преди него.
- Местоположение на текстовите файлове - Определя в коя папка да се записват. По подразбиране тя е Документи\TikTok live. С бутона Преглед може да се избере друга папка. Новото местоположение влиза в сила при следващото свързване към лайф.
- Изчистване на файловете при стартиране - Изтрива съдържанието на текстовите файлове при включване на добавката.
- Опростяване на потребителските имена - Тази опция има за цел да изчисти всичко излишно от имената на потребителите, които взаимодействат с лайфа. Нейната необходимост беше породена от това, че голяма част от потребителите в TikTok слагат в своите имена емоджита и всякакви други Unicode символи, които пречат при прочитане на името с екранен четец. Когато опцията е включена, от имената на потребителите се изчиства всичко излишно и в тях остават само букви, цифри и препинателни знаци.
- Архивиране на всяка лайф сесия - Когато опцията е включена, в директорията с текстови файлове се създава папка Backups. При изключване на добавката всяка приключила сесия се копира в собствена подпапка, чието име съдържа дата, час и домакин например 2026-08-15 21-40-03 potrebitel. Така сесиите се подреждат хронологично и най-новите остават отдолу. Подредбата и структурата на текстовите файлове е същата като при тези в основната директория.
- Брой опити за свързване - Определя колко пъти добавката да опитва да се свърже с лайфа на зададения потребител.
Събития
Този раздел съдържа различни отметки. Чрез тях се определя кои данни да се записват във файла events.txt. За всяко събитие има отметка. Това могат да са коментари, последователи, гифтове, харесвания, заявки за присъединяване, споделяния и посетители.
Автоматично изговаряне
Този раздел определя кои данни да се съобщават, когато функцията за автоматично изговаряне е включена. Тя се активира с клавишната комбинация NVDA+Shift+Control+S или чрез опцията Автоматично изговаряне на избраните събития. Когато тя е включена, само тогава се показват отметките за различните събития след нея. При поява на някое от тях, то ще бъде прочетено автоматично например "Нов последовател: Името на потребителя". Или "Име на потребител сподели лайфа".
Звуци
Този раздел определя за кои събития в лайфа да се възпроизвеждат кратки звукови сигнали. За да работи функцията, е необходимо първо да се активира опцията Възпроизвеждане на звуци за избраните събития. След нея ще се появят отметките, подредени по същия начин както в предишните два раздела. Звуците също могат да се включват и изключват с клавишната комбинация NVDA+Shift+Control+P. Налични са и следните опции:
- Сила на звука - Този плъзгач определя колко да са силни звуковите сигнали за събития.
- Научаване на звуците - Възпроизвежда тяхно описание, за да може потребителят да ги чуе предварително.
Звуковите сигнали и съобщенията към тях се възпроизвеждат с пауза от една секунда помежду им. Съхраняват се във временни файлове, за да могат да бъдат докладвани по поредност при натоварени лайфове. Функцията за възпроизвеждане на звуци и тази за автоматично изговаряне са независими една от друга.
Как се използва добавката
Когато са направени необходимите настройки, натиснете 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. Там се създава и подпапка Backups, ако сте включили опцията за архивиране на всяка сесия.
Някои особености
- При отваряне на настройките на добавката, изговарянето на събития и звуците временно се деактивират, ако са били включени. Записването на данни продължава на заден фон.
- Ако има активна сесия и потребителското име в настройките е променено, след тяхното запазване добавката ще се опита да се свърже с новия потребител.
- Когато автоматичното изчистване на файловете при стартиране е изключено, в тях ще са останали данни от последния лайф. Ако искате да ги изчистите в началото на текущата сесия, натиснете NVDA+Shift+Control+R.
- Също така когато файловете не се изтриват автоматично, при рестарт на добавката тя се опитва да позиционира потребителя там, където последно е бил например върху ред 45 от файла с коментари.
Ограничения
- Исках да добавя функция за показване на всички текущи зрители в лайфа. Но библиотеката TikTokLive не може да докладва напускане на даден потребител.
- Също така исках да има класация на зрителите по време, прекарано в лайфа. Но поради липса на информация за това кога даден потребител е излязъл, не може да се създаде такава функционалност.
- При превода на добавката на български се установи, че подаръците в TikTok са твърде много и социалната мрежа ги променя постоянно. Поддръжката на такъв превод не е рентабилна, затова имената на подаръците ще се съобщават на английски.
- Когато се регистрират заявки за присъединяване, ако потребителят по някакъв начин е взаимодействал с лайфа, неговото име се вижда във файла requests.txt. Но ако не е проявил активност, най-малкото да е бил отразен като посетител, заявката ще бъде игнорирана. Причината за това поведение е, че TikTok не извежда публично имената на потребителите, които искат да се присъединят към лайф и трябва те да се извличат от вече събраните по време на сесията хора.
Списък с промените
Версия 1.8
- Добавено е въпросително съобщение при изтриване на всички файлове с NVDA+Shift+Control+R. Целта е да се избегне активирането на командата по невнимание.
- Вече има настройка за избор на местоположение на текстовите файлове. То по подразбиране остава в Документи\TikTok live.
- Нова опция Архивиране на всяка лайф сесия. В основната директория с текстовите файлове се създава папка Backups. В нея се добавят подпапки с текстовите файлове от всички изминали лайф сесии. Имената им съдържат дата, час и домакин.
- Настройките на добавката вече ще се запазват в основната папка на NVDA. Така няма да се възстановяват до стойностите по подразбиране при следващи обновявания на TikTok Live Reader.
- Минималната поддържана версия на NVDA вече е 2025.1.
- Рефакториране и оптимизиране на част от кода, подобрена е стабилността и са отстранени някои грешки.
Версия 1.6
- Добавката вече е съвместима с NVDA 2026.1.
- Настройките в раздел Събития сега отговарят само за файла events.txt. Те определят какви типове данни да се записват в него.
- Добавен е раздел Звуци с главен превключвател опцията Възпроизвеждане на звуци за избраните събития.
- По този начин функцията за автоматично изговаряне, възпроизвеждането на звуци и записването на данни във файла със събития не са зависими помежду си.
Версия 1.5
- Стабилизирана е логиката за зареждане и изключване на добавката.
- Вече се използва шаблонът NVDA addon template, което ще улесни автоматизацията при създаване на нови версии, преводи на интерфейса и така нататък.
- Стабилизирана е логиката за записване на харесвания, споделяния и последвания.
- Стойността на опцията за автоматично изговаряне на събития вече се взема предвид от добавката. Когато автоматичното изговаряне е включено, се изчаква 10 секунди след успешно свързване с потребител и тогава започва съобщаването на събития.
- Опцията вече е добавена и в съответния раздел с име Автоматично изговаряне на избраните събития. Само когато е включена, тогава се показват останалите отметки - Коментари, Последователи, Гифтове и така нататък.
- Коригиран бъг, при който в някои случаи се възпроизвеждаха звуци и се изговаряха събития веднага след рестарт на TikTok Live Reader.
- Добавена е клавишна комбинация NVDA+Shift+Control+P за включване и изключване на звуците. Тя е в сила, когато има активна сесия и се записват събития.
- Добавени са клавиши за бърз достъп (access keys) за различните настройки, когато прозорецът е отворен. Това са клавишни комбинации с Alt и буквите.
- Изчистена е логиката за плъзгача Audio volume. Той вече се нарича само Volume на английски, на български етикетът си остава Сила на звука.
- Преводът на опцията Clean usernames е променен на Опростяване на потребителските имена.
- Настройките вече се запаметяват динамично. При отваряне на техния прозорец, добавката продължава да записва събития на заден фон, но звуците и автоматичното изговаряне се изключват временно. След затварянето на настройките, тези функции отново работят както се очаква.
- Ако потребителското име в настройките е променено, след тяхното затваряне добавката прави опит да се свърже с новия потребител.
- Добавена е възможност за регистриране на заявки за присъединяване към лайфа. Те се записват във файла requests.txt, който се намира при останалите текстови файлове в папка Документи\TikTok live.
- Вече има опция Заявки в настройките за събития и автоматично изговаряне. Също така е добавен и нов звуков сигнал, който се възпроизвежда ако докладването на това събитие чрез звук е включено.
- Ако се въведе потребителско име, по-малко от два символа или то съдържа само интервали, добавката изговаря съобщение за грешка. Полето може да приема само букви на латиница, числа и препинателни знаци.
Благодарности
- Благодаря на MuhammadGagah, който много ми помогна с оптимизирането на логиката за включване и изключване на добавката и за нейното зареждане в изолирана среда. Също така той добави индонезийски превод на интерфейса и документацията.
- Благодарности към Бена Къркова за добрите идеи, които ми е давала по време на разработката на този проект и за огромната подкрепа и вяра в него.
Финални уточнения
Тази добавка е разработена с помощта на езиковите модели ChatGPT, Google Gemini и Claude. Разпространява се под лиценз GNU General Public License 2.0.