✨ allow injecting custom cookies
This commit is contained in:
parent
8def009b73
commit
df173dfe47
|
|
@ -17,3 +17,12 @@ In an async context, you can initialize the API in one line
|
|||
const ytmusic = await new YTMusic().initialize()
|
||||
// Use API here
|
||||
```
|
||||
|
||||
## Custom Cookies
|
||||
|
||||
If you want to use your own cookies for all requests, you can do so like this
|
||||
|
||||
```ts
|
||||
const ytmusic = await new YTMusic()
|
||||
.initialize("COOKIES=here; COOKIES=here; COOKIES=here")
|
||||
```
|
||||
|
|
@ -57,15 +57,7 @@ export default class YTMusic {
|
|||
if (!res.config.baseURL) return
|
||||
|
||||
const setCookie = res.headers["set-cookie"] as Array<string> | string
|
||||
const cookieStrings: string[] = []
|
||||
|
||||
if (setCookie instanceof Array) {
|
||||
cookieStrings.push(...setCookie)
|
||||
} else {
|
||||
cookieStrings.push(setCookie)
|
||||
}
|
||||
|
||||
for (const cookieString of cookieStrings) {
|
||||
for (const cookieString of [setCookie].flat()) {
|
||||
const cookie = Cookie.parse(`${cookieString}`)
|
||||
if (!cookie) return
|
||||
|
||||
|
|
@ -79,7 +71,16 @@ export default class YTMusic {
|
|||
/**
|
||||
* Initializes the API
|
||||
*/
|
||||
public async initialize() {
|
||||
public async initialize(cookies?: string) {
|
||||
if (cookies) {
|
||||
for (const cookieString of cookies.split("; ")) {
|
||||
const cookie = Cookie.parse(`${cookieString}`)
|
||||
if (!cookie) return
|
||||
|
||||
this.cookiejar.setCookieSync(cookie, "https://music.youtube.com/")
|
||||
}
|
||||
}
|
||||
|
||||
const html = (await this.client.get("/")).data as string
|
||||
const setConfigs = html.match(/ytcfg\.set\(.*\)/) || []
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue