Loo Google Chrome'i laiendused Netflixi subtiitrite stiiliga
Lukasz Kolko
Täna loome Google Chrome'i laiendused Netflixi subtiitrite stiilide manipuleerimiseks reaalajas. Saate teavet laienduste loomisest nullist, mõningaid praktilisi nõuandeid ja üldisi vaateid laienduste arhitektuurist. Kui te ei ole rahul olemasolevate Netflixi subtiitrite valikutega või soovite lihtsalt kiiresti luua mõne laienduse, et muuta elu lihtsamaks, on see artikkel just teile.
Meie eesmärgid:
luua laiendusloogika
salvestada seaded brauseri kohalikku salvestusruumi
automaatne laadimine ja laienduste aktiveerimine ainult Netflixi lehel
Netflix saadab oma API kaudu iga subtiitri lause eraldi. Subtiitrite kujundamiseks kasutatakse CSS-stiile. Juurdepääsuga lehe DOMile saame neid saadud stiile Chrome'i laiendusega manipuleerida.
Manifest
Kõigepealt peame looma manifesti faili nimega manifest.json. See teatab brauserile laienduse seadistustest, näiteks UI-failidest, taustaskriptidest ja võimalustest, mida laiendus võib omada.
Nagu näete, on meil olemas mõned standardandmed, nagu nimi, versioon, kirjeldus, kodulehturl ja manifestversioon.
Manifesti üks oluline osa on õiguste osa. See on massiivi elementidega, millele meie laiendus saab juurdepääsu.
Meie puhul on meil vaja juurdepääsu vahekaartidele, et leida aktiivne vahekaart, käivitada skripte ja saata sõnumeid kasutajaliidese ja laienduse vahel. Meil on vaja salvestusruumi laiendussätete salvestamiseks brauseris ja declarativeContent tegevuste tegemiseks sõltuvalt vahekaardi sisust. Viimane element https://*.netflix.com/ võimaldab laiendusele juurdepääsu ainult netflix.com domeenile.
Chrome'i laiendustel on kasutajaliidese loogika eraldi, seega on meil vaja background.scripts, mis ütleb laiendusele, kust ta leiab oma loogika. persistent: false tähendab, et seda skripti kasutatakse ainult vajadusel. page_action on lõik, kus on kasutajaliidese osa. Meil on siin lihtne HTML-fail hüpikmenüü ja laienduse PNG logo jaoks.
Laiendusloogika
Kõigepealt tuleb seadistada runtime.onInstalled käitumisviisid, eemaldada kõik praegused reeglid (näiteks vanematest versioonidest) ja deklareerida funktsioon uute reeglite lisamiseks. Me kasutame salvestussätete jaoks Local Storage, et saaksime pärast laienduse paigaldamist määrata vaikimisi seaded.
Meie reegli eesmärk on keelata laiendamisnupp kõikides domeenides, välja arvatud netflix.com. Loome uue reegli koos PageStateMatcher tingimused ja deklareerida ShowPageAction kus määratakse uus reegel.
Kõigepealt kontrollime, et changeInfo.status on olekuga complete. See tähendab, et sellel vahekaardil olev veebileht on laetud. Seejärel saame seaded Local Storage'ist ja deklareerime, millist skripti tuleks jooksvalt tabId-ga tab'ile käivitada. Lõpuks saadame callbackis skriptile sõnumi koos seadistustega UI-st.
Laienduse kasutajaliides
Laienduse hüpikmenüü koos vormiga loomiseks loome kolm faili: popup.html ja popup.css visuaalsete kihtidega ja popup.js loogika menüü ja isoleeritud menüü vaheliseks suhtlemiseks background.js käsikiri.
Meie UI eesmärk:
Siin on meil lihtne HTML-vorm sisseehitatud valideerimisega: popup.html:
Ülaltoodud skriptis laadime seaded kohalikust salvestusruumist ja kinnitame need vormi sisenditele. Seejärel loome kuulaja esitada sündmus funktsioonidega seadete salvestamiseks kohalikku salvestusseadmesse ja saata need sõnumiga meie skriptile. Nagu näete, kasutame igas komponendis Local Storage'i. Chrome'i laiendil ei ole oma andmeruumi, seega on kõige lihtsam lahendus kasutada brauseri lokaalset ruumi nagu Local Storage. Samuti kasutame sageli sendMessage funktsioon. Selle põhjuseks on Chromme'i laienduste arhitektuur - neil on kasutajaliidese loogika eraldi.
Stsenaarium
Nüüd on aeg luua script.js loogikaga Netflixi subtiitrite stiilide manipuleerimiseks.
Kõigepealt loome onMessage kuulaja, mis võtab vastu laienduse seadistustega sõnumeid.
Netflixi puhul vahetab ta iga kord, kui ta saab terved subtiitrite laused, ainult lehekülje DOM-i subtiitrite osa. Seega peame kasutama vaatleja funktsiooni nagu MutationObserver, mis käivitab meie changeSubtitlesStyle funktsiooni iga kord, kui lehekülje DOM on muutunud. In the callback funktsiooni näeme lihtsat stiilide manipuleerimist. Kommenteeritud ridades on teave selle kohta, kust saab leida õigeid stiile.
Aeg joosta
Eeldan, et teil ei ole Chrome Webstore'is arendajakontot. Nii et selle laienduse käivitamiseks minge aadressile chrome://extensions/ oma Chrome'is, klõpsake Koormus lahtipakitud, valige laiendiga kaust ja ongi kõik! Seejärel minge ilmselt Netflixi lehele selle testimiseks.
Järeldused
Nagu näete, on lihtne hakata looma mõningaid laiendusi, mis muudavad elu lihtsamaks. Kõige olulisem on mõista Google Chrome'i laienduste jagatud arhitektuuri ja komponentide vahelist suhtlust. See subtiitrite stiilimängija on vaid lihtne demo sellest, mida saab teha Chrome'i laienduste APIga.
Nagu näete, on lihtne hakata looma mõningaid laiendusi, mis muudavad elu lihtsamaks. Kõige olulisem on mõista Google Chrome'i laienduste jagatud arhitektuuri ja komponentide vahelist suhtlust. See subtiitrite stiilimängija on vaid lihtne demo sellest, mida saab teha Chrome'i laienduste APIga.
Kujutage ette oma vaatamise kogemus platvormidel, nagu Netflix, laienduste abil. Näiteks populaarne Netflixi pidu võimaldab kasutajatel vaadata sisu koos ja sünkroonis. Veebileht laienduse ikoon oma tööriistaribal võib anda teile kiire juurdepääsu kontrollfunktsioonidele, kui Netflixi voogedastus. Selliste vahendite idee nagu Netflix laiendatud on lisada rohkem funktsionaalsust otse Netflixi rakendus läbi Netflixi laiendus integreeritud Chrome'isse. Sirvides Netflixi veebisait, võivad sellised laiendused aidata kasutajatel navigeerida läbi Netflixi kategooriad tõhusamalt või isegi varjatud Netflixi sisu millega nad muidu ei pruugi kokku puutuda.
Lisaks sellele kujutage ette, et saate lisada kohandatud profiilipilt oma Netflixi profiilile või suurema kontrolliga subtiitrite ja taasesituskiiruse üle. Kõigele sellele saab ligi otse Chrome'i veeb brauser, mis muudab üldise Netflixi kogemus rohkem kohandatud iga kasutaja eelistustele. Laiendused mitte ainult ei täiusta veebisaitide, näiteks Netflixi funktsioone, vaid tõstavad ka üldist kasutaja suhtlust, muutes selle kaasahaaravamaks ja kasutajasõbralikumaks.