Tworzenie rozszerzeń Google Chrome ze stylizatorem napisów Netflix
Łukasz Kolko
Dziś zajmiemy się tworzeniem rozszerzeń do przeglądarki Google Chrome, które umożliwiają manipulowanie stylami napisów w serwisie Netflix w czasie rzeczywistym. Znajdziesz tu informacje na temat tworzenia rozszerzeń od podstaw, kilka praktycznych porad i ogólne poglądy na temat architektury rozszerzeń. Jeśli nie jesteś zadowolony z dostępnych opcji napisów Netflix lub po prostu chcesz szybko stworzyć rozszerzenie ułatwiające życie, ten artykuł jest dla Ciebie.
Nasze cele:
tworzenie logiki rozszerzenia
zapisywanie ustawień w lokalnej pamięci przeglądarki
automatyczne ładowanie i aktywowanie rozszerzeń tylko na stronie Netflix
Netflix przez swój interfejs API wysyła każde zdanie napisów osobno. Używa stylów CSS do stylizacji napisów. Mając dostęp do DOM strony, możemy manipulować otrzymanymi stylami za pomocą rozszerzenia Chrome.
Manifest
Po pierwsze, musimy utworzyć plik manifestu o nazwie manifest.json. Informuje on przeglądarkę o konfiguracji rozszerzenia, takich jak pliki interfejsu użytkownika, skrypty tła i możliwości, jakie może mieć rozszerzenie.
Jak widać, mamy kilka standardowych informacji, takich jak nazwa, wersja, opis, strona głównaurl i manifestwersja.
Jedną z ważnych części manifestu jest sekcja uprawnień. Jest to tablica z elementami, do których nasze rozszerzenie może uzyskać dostęp.
W naszym przypadku musimy mieć dostęp do kart, aby znaleźć aktywną kartę, wykonywać skrypty i wysyłać wiadomości między interfejsem użytkownika a rozszerzeniem. Potrzebujemy storage do przechowywania ustawień rozszerzenia w przeglądarce i declarativeContent do podejmowania akcji w zależności od zawartości karty. Ostatni element https://*.netflix.com/ umożliwia rozszerzeniu dostęp tylko do domeny netflix.com.
Rozszerzenia Chrome mają oddzielną logikę od interfejsu użytkownika, więc musimy mieć background.scripts, który mówi rozszerzeniu, gdzie może znaleźć swoją logikę. persistent: false oznacza, że ten skrypt będzie używany tylko w razie potrzeby. page_action to sekcja z częścią interfejsu użytkownika. Mamy tutaj prosty plik HTML dla menu podręcznego i logo PNG rozszerzenia.
Logika rozszerzenia
Najpierw musimy skonfigurować zachowanie runtime.onInstalled, usunąć wszelkie bieżące reguły (na przykład ze starszych wersji) i zadeklarować funkcję dodawania nowych reguł. Używamy Local Storage do przechowywania ustawień, dzięki czemu możemy przypisać ustawienia domyślne po zainstalowaniu rozszerzenia.
Naszym głównym celem jest wyłączenie przycisku rozszerzenia we wszystkich domenach innych niż netflix.com. Tworzymy nową regułę z PageStateMatcher warunki i deklaracja ShowPageAction gdzie zostanie przypisana nowa reguła.
Najpierw sprawdzamy, czy changeInfo.status ma status complete. Oznacza to, że strona na tej karcie jest załadowana. Następnie pobieramy ustawienia z Local Storage i deklarujemy, który skrypt powinien zostać uruchomiony na bieżącej zakładce z tabId. Wreszcie, w wywołaniu zwrotnym wysyłamy wiadomość z ustawieniami z interfejsu użytkownika do skryptu.
Interfejs użytkownika rozszerzenia
Aby utworzyć rozszerzenie menu podręcznego z formularzem, tworzymy trzy pliki: popup.html i popup.css z warstwami wizualnymi i popup.js z logiką do komunikacji między menu a odizolowanymi urządzeniami background.js scenariusz.
Nasz cel UI:
Tutaj mamy prosty formularz HTML z wbudowaną walidacją: popup.html:
W powyższym skrypcie ładujemy ustawienia z Local Storage i dołączamy je do wejść formularza. Następnie tworzymy listener do przedkładać z funkcjami zapisywania ustawień do Local Storage i wysyłania ich za pomocą wiadomości do naszego skryptu. Jak widać, używamy Local Storage w każdym komponencie. Rozszerzenie Chrome nie ma własnej przestrzeni danych, więc najprostszym rozwiązaniem jest użycie lokalnej przestrzeni przeglądarki, takiej jak Local Storage. Często korzystamy również z sendMessage funkcja. Jest to spowodowane architekturą rozszerzeń Chromme - mają one oddzielną logikę od interfejsu użytkownika.
Scenariusz
Teraz nadszedł czas na stworzenie script.js z logiką do manipulowania stylami napisów Netflix.
Najpierw tworzymy onMessage listener do odbierania wiadomości z ustawieniami z rozszerzenia.
W przypadku Netflixa, za każdym razem, gdy otrzymuje całe zdania napisów, zamienia tylko część napisów w DOM strony. Musimy więc użyć funkcji obserwatora, takiej jak MutationObserverktóry będzie uruchamiał nasz changeSubtitlesStyle za każdym razem, gdy DOM strony ulegnie zmianie. W callback widzimy prostą manipulację stylami. Zakomentowane linie zawierają informacje o tym, gdzie można znaleźć odpowiednie style.
Czas na bieg
Zakładam, że nie posiadasz konta deweloperskiego w Chrome Webstore. Aby uruchomić to rozszerzenie, przejdź do chrome://extensions/ w przeglądarce Chrome, kliknij ikonę Ładunek rozpakowany, wybierz folder z rozszerzeniem i to wszystko! Następnie oczywiście przejdź do strony Netflix, aby ją przetestować.
Wnioski
Jak widać, łatwo jest zacząć tworzyć rozszerzenia, które ułatwiają życie. Najważniejszą częścią jest zrozumienie podzielonej architektury rozszerzeń Google Chrome i komunikacji między komponentami. Ten styler napisów jest tylko prostą demonstracją tego, co można zrobić za pomocą interfejsu API rozszerzeń Chrome.
Jak widać, łatwo jest zacząć tworzyć rozszerzenia, które ułatwiają życie. Najważniejszą częścią jest zrozumienie podzielonej architektury rozszerzeń Google Chrome i komunikacji między komponentami. Ten styler napisów jest tylko prostą demonstracją tego, co można zrobić za pomocą interfejsu API rozszerzeń Chrome.
Wyobraź sobie ulepszenie wrażenia z oglądania na platformach takich jak Netflix z mocą rozszerzeń. Na przykład popularna aplikacja Netflix Party umożliwia użytkownikom wspólne oglądanie treści w synchronizacji. An ikona rozszerzenia na pasku narzędzi może zapewnić szybki dostęp do funkcji sterowania, gdy streaming Netflix. Idea stojąca za narzędziami takimi jak Netflix Extended jest dodanie większej funkcjonalności bezpośrednio do Aplikacja Netflix przez Rozszerzenie Netflix zintegrowana z Chrome. Podczas przeglądania Witryna NetflixTakie rozszerzenia mogą pomóc użytkownikom w nawigacji przez Kategorie Netflix bardziej wydajne, a nawet odkrywanie ukrytych Zawartość Netflix na które mogliby nie natrafić w inny sposób.
Co więcej, wyobraź sobie możliwość dodania niestandardowe zdjęcie profilowe do profilu Netflix lub mieć większą kontrolę nad napisami i szybkością odtwarzania. Wszystko to jest dostępne bezpośrednio z poziomu aplikacji Chrome web przeglądarka, dzięki czemu ogólna Doświadczenie z Netflix bardziej dostosowane do preferencji każdego użytkownika. Rozszerzenia nie tylko zwiększają funkcjonalność witryn takich jak Netflix, ale także poprawiają ogólną interakcję z użytkownikiem, czyniąc ją bardziej wciągającą i przyjazną dla użytkownika.