Kakulukian / youtube-transcript

Fetch transcript from a youtube video
240 stars 51 forks source link

🚨 Error: Transcript is disabled on this video #11

Open valenium opened 8 months ago

valenium commented 8 months ago

I have received this error message, despite putting a youtube video through that I had previously received a transcript for the day before. image

Wondering if I have made too many requests?

aehlke commented 6 months ago

Still an issue?

mfarhansadique commented 5 months ago

Ive been having this issue for a while. Sometimes it works sometimes it doesnt

https://youtu.be/Eim2GpHNQDg?feature=shared

could the issue have anything to do with '?feature=shared'

cmsax commented 1 month ago

always have this issue, I've confirmed that the original video's transcript is NOT DISABLED and tried multiple different network environment.

OpeyemiSanusi commented 1 month ago

I am goin through the exact same thing right now. It was working well all week long then boom - "Transcript is disabled on this video". I tried it on a video that I had a transcript for before and I got the same result.

cmsax commented 1 month ago

Based on a previous issue (the specific one escapes me), someone mentioned that the root cause is YouTube's official ban on the IP address where the script is executed. Unfortunately, there's nothing we can do to resolve this directly. The only workaround is to route the request through a proxy with an IP address that hasn't been banned.

akmaldira commented 3 weeks ago

Based on a previous issue (the specific one escapes me), someone mentioned that the root cause is YouTube's official ban on the IP address where the script is executed. Unfortunately, there's nothing we can do to resolve this directly. The only workaround is to route the request through a proxy with an IP address that hasn't been banned.

any way to fix it?

hexxt-git commented 2 weeks ago

it works on my home wifi but not on the server

OpeyemiSanusi commented 2 weeks ago

it works on my home wifi but not on the server

I have been meaning to get to this. I discovered this library is just a scrapper. Google banned a lot of public IP’s from being able to do that so the only way you can run it is through your own IP or a proxy and that’s a big risk because you’d probably be ban too. My current workaround is using a web scrapper that scrapes from a website that has it figured out. I am hoping to deploy another type of scraper in the cloud that works with a dynamic link and returns the transcript that way I wouldn’t be dealing with YouTube directly. Since it’s for personal use I shouldn’t draw too much attention to the website.

hexxt-git commented 2 weeks ago

if youre stuck on this youtubei.js package worked for me but its a bit more involved

OpeyemiSanusi commented 2 weeks ago

if youre stuck on this youtubei.js package worked for me but its a bit more involved

@9EED do you have working code you could share with the library or just explain how you got it to work

hexxt-git commented 2 weeks ago

@9EED do you have working code you could share with the library or just explain how you got it to work

yeah here is it @OpeyemiSanusi i only got the text snippets here but you can get the times too

        import {Innertube} from 'youtubei.js/web';

    const youtube = await Innertube.create({
        lang: 'en',
        location: 'US',
        retrieve_player: false,
    });

    const fetchTranscript = async (): Promise<string[]> => {
        try {
            const info = await youtube.getInfo(url);
            const transcriptData = await info.getTranscript();
            return transcriptData.transcript.content.body.initial_segments.map((segment) => segment.snippet.text)
        } catch (error) {
            console.error('Error fetching transcript:', error);
            throw error;
        }
    };
OpeyemiSanusi commented 2 weeks ago

@9EED do you have working code you could share with the library or just explain how you got it to work

yeah here is it @OpeyemiSanusi i only got the text snippets here but you can get the times too

        import {Innertube} from 'youtubei.js/web';

  const youtube = await Innertube.create({
      lang: 'en',
      location: 'US',
      retrieve_player: false,
  });

  const fetchTranscript = async (): Promise<string[]> => {
      try {
          const info = await youtube.getInfo(url);
          const transcriptData = await info.getTranscript();
          return transcriptData.transcript.content.body.initial_segments.map((segment) => segment.snippet.text)
      } catch (error) {
          console.error('Error fetching transcript:', error);
          throw error;
      }
  };

@9EED I can't thank you enough! I got it to work! The transcript is a bit messy with the ([ __ ]) but it's way better than what i was working on. I appreciate this so much!

RamGoel commented 2 weeks ago

@9EED Thanks a lot man! was struggling for almost 8 hours. This helped.