Skip to content

Miniget Error: Status code: 410 #1230

@dev-syn

Description

@dev-syn

I have noticed that an issue like this is happening and I've tried following through on what has been said to try and fix it.

async function playSong(guildID: string,song: Video): Promise<void> {
    return new Promise<void>((resolve, reject) => {
        let videoStream: internal.Readable | null = null;
        try {
            // Download the video
            videoStream = ytdl(song.url,{
                quality: "highestaudio",
                dlChunkSize: 0,
                requestOptions: {
                    headers: {
                        cookie: process.env.YT_COOKIE,
                        "x-youtube-identity-token": process.env.YT_TOKEN
                    }
                }
            });
        } catch(err) { return reject(err); }

        processVideo(videoStream)
        .then((voiceData: Buffer) => {
            const guildPlayer: AudioPlayer = guildAudioPlayers.ensure(guildID,() => createAudioPlayer());
            const resource: AudioResource = createAudioResource(Readable.from([voiceData]));
            try {
                guildPlayer.play(resource);
                resolve();
            } catch(err) { return reject(err); }
        })
        .catch(err => reject(new Error("Failed to play song with error: " + err.message)));

    });
}

This is where I'm using ytdl and from what I noticed when I try and play an age restricted/suicide topic song I get this output

[14:51:27] ERROR: Status code: 410
    err: {
      "type": "MinigetError",
      "message": "Status code: 410",
      "stack":
          Error: Status code: 410
              at ClientRequest.<anonymous> (E:\MyDev\_Projects\Discord\dscrd-TheDirector\node_modules\miniget\src\index.ts:255:19)
              at Object.onceWrapper (node:events:628:26)
              at ClientRequest.emit (node:events:513:28)
              at HTTPParser.parserOnIncomingClient (node:_http_client:701:27)
              at HTTPParser.parserOnHeadersComplete (node:_http_common:119:17)
              at TLSSocket.socketOnData (node:_http_client:542:22)
              at TLSSocket.emit (node:events:513:28)
              at addChunk (node:internal/streams/readable:324:12)
              at readableAddChunk (node:internal/streams/readable:297:9)
              at TLSSocket.Readable.push (node:internal/streams/readable:234:10)
      "statusCode": 410
    }

For example trying to play: https://www.youtube.com/watch?v=yNjWAjXTryE

If I go to youtube manually and try and play this song I get the popup from youtube saying

The following content may contain suicide or self-harm topics.
Viewer discretion is advised.

I understand and wish to proceed.

I read from another issue that doing the cookies would allow me to view this content and even after doing so I still receive the error above.

EDIT:
I also tried the fix in #1080

const url: string = parseAgeYTUrl(song);
Logger.info("Getting song with url: " + url);
let info: ytdl.videoInfo | undefined = undefined;
try {
    info = await ytdl.getBasicInfo(url,{
          requestOptions: {
              headers: {
                  cookie: process.env.YT_COOKIE,
                  "x-youtube-identity-token": process.env.YT_TOKEN
              }
          }
      });
} catch(err) { Logger.error(err); }
function parseAgeYTUrl(input: string) {
    return `${input}&bpctr=${Date.now()}&has_verified=1`;
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions