YouTube.js è un wrapper costruito intorno all'API InnerTube. Scritto in linguaggio JavaScript, è stato progettato per incapsulare l'interfaccia utilizzata dai client YouTube all'interno di siti Web e Web application. Per capirne il funzionamento analizziamo innanzitutto le caratteristiche dell'API di riferimento.
Cosa fa YouTube.js
InnerTube è un'API per YouTube creata con l'obbiettivo di semplificare il rilascio di nuove funzionalità su tutta la piattaforma. YouTube.js è invece una libreria che gestisce le comunicazioni di basso livello con InnerTube, fornendo un modo semplice ed efficiente per interagire con il servizio di Mountain View tramite programmazione. Il suo design mira a emulare un client reale, compreso il parsing delle risposte dell'API.
Per utilizzare il wrapper è necessaria la Fetch API che fornisce un'interfaccia per recuperare risorse anche attraverso la rete. Nello stesso modo sono necessarie le interfacce EventTarget
, implementata da oggetti che possono ricevere eventi, e CustomEvent
, con cui vengono rappresentati gli eventi inizializzati da un'applicazione.
Per quanto riguarda invece gli ambienti di riferimento, YouTube.js può operare con Node.JS, Deno e qualsiasi browser aggiornato di recente.
Installazione di YouTube.js
È possibile installare il wrapper con npm:
npm install youtubei.js@latest
così come con Yarn:
yarn add youtubei.js@latest
o con Git:
npm install github:LuanRT/YouTube.js
In ogni caso il repository del progetto è disponibile su GitHub e si può procedere anche con l'importazione della libreria direttamente da deno.land con la seguente istruzione:
import { Innertube } from 'https://deno.land/x/youtubei/deno.ts';
Le funzionalità supportate
Per utilizzare YouTube.js è necessario creare innanzitutto un'istanza di InnerTube perché il suo scopo è, appunto, quello di comunicare con L'API:
import { Innertube } from 'youtubei.js';
const youtube = await Innertube.create(/* options */);
Fatto questo è possibile accedere a tutte le funzionalità generalmente richieste ad un client YouTube. Sono quindi supportate funzionalità come la gestione delle lingue per la localizzazione, la geolocalizzazione, l'impostazione della timezone e la gestione dei cookie. Particolarmente interessante la possibilità di supportare più account loggati contemporaneamente.