mirror of
https://github.com/LuanRT/YouTube.js.git
synced 2026-06-16 19:12:24 +00:00
63 lines
1.8 KiB
Markdown
63 lines
1.8 KiB
Markdown
# Browser Usage Example
|
|
|
|
YouTube.js works in the browser!
|
|
|
|
## Usage
|
|
|
|
To use YouTube.js in the browser you must proxy requests through your own server. You can see our simple reference implementation in Deno in `examples/browser/proxy/deno.ts`.
|
|
|
|
We'll use our own fetch implementation to proxy requests through our server. This is a simple example, but you can use any fetch implementation you want.
|
|
|
|
```ts
|
|
import { Innertube } from "youtubei.js/web.bundle.min";
|
|
|
|
const yt = await Innertube.create({
|
|
fetch: async (input, init) => {
|
|
// url
|
|
const url = typeof input === 'string'
|
|
? new URL(input)
|
|
: input instanceof URL
|
|
? input
|
|
: new URL(input.url);
|
|
|
|
// transform the url for use with our proxy
|
|
url.searchParams.set('__host', url.host);
|
|
url.host = 'localhost:8080';
|
|
url.protocol = 'http';
|
|
|
|
const headers = init?.headers
|
|
? new Headers(init.headers)
|
|
: input instanceof Request
|
|
? input.headers
|
|
: new Headers();
|
|
|
|
// now serialize the headers
|
|
url.searchParams.set('__headers', JSON.stringify([...headers]));
|
|
|
|
// copy over the request
|
|
const request = new Request(
|
|
url,
|
|
input instanceof Request ? input : undefined,
|
|
);
|
|
|
|
headers.delete('user-agent');
|
|
|
|
// fetch the url
|
|
return fetch(request, init ? {
|
|
...init,
|
|
headers
|
|
} : {
|
|
headers
|
|
});
|
|
},
|
|
cache: new UniversalCache(),
|
|
});
|
|
```
|
|
|
|
After that, you can use the library as normal.
|
|
|
|
## Example
|
|
|
|
We've got a full example in `examples/browser/web` using vite.
|
|
|
|
If you don't want to run the example yourself, you can see it in action here: [ytjsexample.pages.dev](https://ytjsexample.pages.dev/). |