Окрема сторінка блогу

 

Blog By Merelyigor

PreMiD Activity для AniTube та UAKino — Discord Rich Presence для українських відеосайтів

Я зробив невеликий open-source проєкт для PreMiD, який додає кастомні Discord-статуси для українських відеосайтів AniTube та UAKino.

Ідея проста: коли ви дивитесь аніме, фільм або серіал, Discord може показувати це як Rich Presence.
Не просто “користувач онлайн”, а нормальний статус із назвою, постером, станом відтворення та прогресом перегляду.

Тобто це виглядає приблизно як активність Spotify, YouTube або інших сервісів, але для сайтів, де офіційної Discord-інтеграції немає.

Що саме робить проєкт

Проєкт називається premid-activities.
Це набір локальних PreMiD Activity для двох українських відеосайтів:

PreMiD працює як проміжний шар між браузером, сайтом і Discord.
Розширення в браузері читає дані зі сторінки, desktop app PreMiD передає їх у Discord, а Discord показує це як активність користувача.

У результаті Discord може показувати, що саме зараз відкрите або відтворюється на сайті.

Що показується для AniTube

Для AniTube activity може відображати:

Це зручно, якщо хочеться, щоб Discord-статус виглядав не як випадковий текст, а як повноцінна активність із контекстом.

Що показується для UAKino

Для UAKino activity може показувати:

Для UAKino також є окремий нюанс із зображеннями.
Discord не завжди нормально завантажує постери напряму з uakino.best, тому в activity використовується обхід через image proxy.
Джерелом картинки все одно залишається сторінка UAKino, але Discord отримує її у більш сумісному форматі.

Навіщо я це зробив

Мені хотілось мати нормальний Discord Rich Presence для сайтів, якими я реально користуюсь.
У популярних сервісів така інтеграція часто вже є, але для локальних або нішевих сайтів її майже ніколи немає.

Тому я зробив свою activity для PreMiD.

У результаті можна:

Це невелика річ, але вона робить використання Discord трохи приємнішим.
Особливо якщо Discord постійно відкритий, а статус хочеться мати акуратний і автоматичний.

Найпростіший спосіб встановлення — через готовий реліз

Раніше activity потрібно було збирати локально.
Зараз це необов’язково, бо в репозиторії вже є готові релізи.

Найпростіший варіант — просто відкрити сторінку GitHub Releases і скачати готовий ZIP-файл:


https://github.com/merelyigor/premid-activities/releases

У релізах можна завантажити потрібну activity:

AniTube.zip
UAKino.zip

Це вже готові built activity.
Їх не потрібно збирати через Node.js, npm або GitHub Actions.
Достатньо скачати ZIP і завантажити його в PreMiD.

Що потрібно перед встановленням

Для роботи потрібні:

Також потрібно увімкнути кілька налаштувань.
Без них локальна activity може просто не запуститися або Discord не покаже статус.

Крок 1. Увімкнути активності в Discord

Спочатку потрібно дозволити Discord показувати вашу активність.

Відкрийте Discord:

User Settings -> Activity Privacy

І увімкніть параметр:

Share your detected activities with others

Якщо ця опція вимкнена, Discord може отримувати активність, але інші користувачі її не побачать.

Крок 2. Увімкнути користувацькі скрипти для PreMiD extension у Chrome

Далі потрібно дозволити PreMiD extension запускати користувацькі скрипти.

Для цього відкрийте сторінку розширень у Chrome або Chromium-браузері:

chrome://extensions/

Знайдіть розширення PreMiD, відкрийте його деталі та увімкніть параметр:

Allow user scripts

Це важливий пункт.
Без нього Chrome може блокувати виконання користувацького коду, який потрібен для локальних activity.

ТУТ ДОДАТИ СКРІНШОТ ІЗ CHROME EXTENSIONS, ДЕ УВІМКНЕНО ALLOW USER SCRIPTS

Крок 3. Увімкнути Activity Developer у PreMiD

Після цього потрібно відкрити сам PreMiD і перейти в налаштування.

У налаштуваннях PreMiD потрібно увімкнути:

Activity Developer

Цей режим відкриває додаткові можливості для локального завантаження activity.
Без нього кнопка для завантаження built activity може бути недоступною.

Крок 4. Завантажити activity у PreMiD

Коли Activity Developer увімкнено, у PreMiD потрібно вибрати опцію для завантаження built activity.

В англійському інтерфейсі це зазвичай:

Load built Activity

У локалізованому інтерфейсі це може виглядати як завантаження модулів або завантаження activity.

Після цього потрібно вибрати ZIP-файл, який був скачаний із GitHub Releases:

AniTube.zip
UAKino.zip

Після завантаження activity має з’явитися в PreMiD.
Далі достатньо відкрити відповідний сайт, запустити відео й перевірити статус у Discord.

Як зібрати activity самостійно

Якщо готовий ZIP із релізів не підходить або хочеться зібрати все локально, це теж можна зробити.

Потрібно мати встановлені:

Клонуємо репозиторій:

git clone https://github.com/merelyigor/premid-activities.git
cd premid-activities

Для Windows:

.\scripts\build.ps1

Для Linux або macOS:

chmod +x ./scripts/build.sh
./scripts/build.sh

Після збірки ZIP-файли будуть у папці:

dist/

Наприклад:

dist/AniTube.zip
dist/UAKino.zip

Ці ZIP-файли можна завантажити в PreMiD так само, як і готові релізи.

Збірка через GitHub Actions

У репозиторії також є GitHub Actions workflow для автоматичної збірки activity.

Це корисно, якщо не хочеться збирати локально, але потрібно отримати новий ZIP із поточної версії коду.

Процес такий:

  1. відкрити репозиторій на GitHub;
  2. перейти у вкладку Actions;
  3. обрати workflow Build PreMiD Activities;
  4. натиснути Run workflow;
  5. обрати all, AniTube або UAKino;
  6. після завершення завантажити artifact із готовими ZIP-файлами.

Але для більшості користувачів простіше взяти готовий ZIP зі сторінки Releases.

Про Discord Application ID

PreMiD Activity потребує clientId Discord Application.
У цьому проєкті потрібні значення вже прописані в коді activity, бо без них built activity не працюватиме коректно.

Важливо: clientId і publicKey не є приватними токенами.
Їх нормально мати у клієнтському open-source коді.

Але не можна публікувати:

Відомі обмеження

Проєкт працює через читання HTML-сторінки та відеоплеєра, тому є кілька обмежень:

Це нормальні обмеження для activity, які працюють поверх сторонніх сайтів.
Якщо сайт змінює HTML або поведінку плеєра, інтеграцію потрібно оновлювати.

Репозиторій і релізи

Код проєкту відкритий і доступний на GitHub:


https://github.com/merelyigor/premid-activities

Готові ZIP-файли можна скачати на сторінці релізів:


https://github.com/merelyigor/premid-activities/releases

У репозиторії є README українською та англійською, скрипти збірки, GitHub Actions workflow і готові релізи для швидкого встановлення.

Висновок

PreMiD Activity для AniTube та UAKino — це невеликий проєкт для тих, хто користується Discord і хоче мати нормальний Rich Presence для українських відеосайтів.

Для встановлення не обов’язково збирати код вручну.
Можна просто скачати готовий ZIP із GitHub Releases, увімкнути користувацькі скрипти для PreMiD extension, увімкнути Activity Developer у PreMiD і завантажити activity.

Після цього Discord зможе показувати, що саме ви дивитесь: назву, постер, стан відтворення та прогрес.

Для мене це приклад невеликої, але практичної автоматизації.
Кілька скриптів, трохи reverse engineering HTML-структури сайтів — і Discord-статус стає набагато інформативнішим.