Kakulukian / youtube-transcript

Fetch transcript from a youtube video
307 stars 61 forks source link

🚨 Error: Transcript is disabled on this video #11

Open valenium opened 11 months ago

valenium commented 11 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 9 months ago

Still an issue?

mfarhansadique commented 8 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 4 months 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 4 months 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 4 months 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 months 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 3 months ago

it works on my home wifi but not on the server

OpeyemiSanusi commented 3 months 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 3 months ago

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

OpeyemiSanusi commented 3 months 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 3 months 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 3 months 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 3 months ago

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

quangthien27 commented 1 month ago

@hexxt-git thanks so much, that works for me too.

Tried youtube-transcript on Cloudflare, Firebase functions, Digital Ocean docker, they seem all banned or rate limited by Google. Then tried youtubei.js and it works! Used video ID instead of url in youtube.getInfo(url); though.

hatemmezlini commented 3 weeks ago

That is due to Youtube banning ISP ips. I have made a working solution using oauth2 that doesn't uses proxies and avoids Youtube ban. You can use it for free on Apify: https://apify.com/invideoiq/video-transcript-scraper. You only pay for Apify usage, however Apify gives you free credit of 5$ which will give you around 5000 transcripts

davidysoards commented 3 weeks ago

i have the same issue on my Ubuntu server (local works fine) and I can confirm using youtubei.js does work (for now) using @hexxt-git's above method, except I pass in the ID of the video to getInfo not the URL.