Skip to content
Advertisement

how do I skip a private video, with this python code

the Package how do I skip a private video with this code I tried the optons (rejecttitle ignore-errors) I looked at YoutubeDL.py at github for option and i have no access to the video is of a Playlist

from __future__ import unicode_literals

from datetime import datetime
import os
import shutil
import sys
import time
import traceback
from os import system, name

import yt_dlp as yb

with open("location.txt", 'w+t') as s:
    s.write(input("path to save files: "))
    s.seek(0)
    data = s.read()
    print("thumbnails will be moved to " + data + "\thumbnail")


def run():
    while True:
        video_url = input("nplease enter youtube video url: ")
        video_info = yb.YoutubeDL().extract_info(
            url=video_url, download=False)
        filename = f"{video_info['title']}"

        ydl_opts = {
            'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio/best',
            'download_archive': 'downloaded_songs.txt',
            'windowsfilenames': True,
            'outtmpl': data + '/%(title)s.%(ext)s',
            'writesubtitles': True,
            'subtitleslangs': ['en', '-live_chat'],
            'writethumbnail': True,
            'embedthumbnail': True,
            'abort_on_unavailable_fragments': False,
            'ignoreerrors': True,
            'verbose': True,
            'postprocessors': [
                {'key': 'FFmpegMetadata',
                 'add_metadata': True, },
                {'key': 'FFmpegEmbedSubtitle'},
                {'key': 'EmbedThumbnail',
                 'already_have_thumbnail': True,
                 },
            ]
        }

        with yb.YoutubeDL(ydl_opts) as ydl:
            ydl.download([video_info['webpage_url']])
            print("nDownload complete... {}".format(filename))
            thumbnail_path()
            clear()


def thumbnail_path():
    start_time = datetime.now()
    sourcepath = data
    sourcefiles = os.listdir(sourcepath)
    destinationpath = data + '/thumbnail'
    thumbnail = os.path.exists(destinationpath)
    if not thumbnail:
        os.makedirs(destinationpath)
    for file in sourcefiles:
        if file.endswith('.webp'):
            shutil.move(os.path.join(sourcepath, file), os.path.join(destinationpath, file))
    end_time = datetime.now()
    print('Duration: {}'.format(end_time - start_time))


def close():
    time.sleep(0)
    print('nBye')
    time.sleep(1)
    sys.exit()


def clear():
    while True:
        ans = input("nDo you want to start again? (y/n) ")
        if ans.lower() == "y":
            if name == "nt":
                system('cls')
                time.sleep(0)
                run()

            else:
                system('clear')
                time.sleep(0)
                run()

        elif ans.lower() == 'n':
            if name == 'nt':
                system('cls')
                close()

            else:
                system('clear')
                close()
        else:
            print("Please respond with 'Yes' or 'No'n")


if __name__ == '__main__':
    try:
        run()
    except KeyboardInterrupt:
        print('nInterrupted')
        while True:
            clear()
    except Exception:
        with open("log.txt", "w") as log:
            traceback.print_exc(file=log)
            print('nError is printed to log.txt')
            close()

ERROR: [youtube] FvnQJZnnXXo: Private video. Sign in if you’ve been granted access to this video

Output from log,txt

Traceback (most recent call last):
  File "C:UsersUserPycharmProjectsYouTube-venvlibsite-packagesyt_dlpextractorcommon.py", line 640, in extract
    ie_result = self._real_extract(url)
  File "C:UsersUserPycharmProjectsYouTube-venvlibsite-packagesyt_dlpextractoryoutube.py", line 3477, in _real_extract
    self.raise_no_formats(reason, expected=True)
  File "C:UsersUserPycharmProjectsYouTube-venvlibsite-packagesyt_dlpextractorcommon.py", line 1124, in raise_no_formats
    raise ExtractorError(msg, expected=expected, video_id=video_id)
yt_dlp.utils.ExtractorError: Private video. Sign in if you've been granted access to this video

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:UsersUserPycharmProjectsYouTube-venvlibsite-packagesyt_dlpYoutubeDL.py", line 1420, in wrapper
    return func(self, *args, **kwargs)
  File "C:UsersUserPycharmProjectsYouTube-venvlibsite-packagesyt_dlpYoutubeDL.py", line 1490, in __extract_info
    ie_result = ie.extract(url)
  File "C:UsersUserPycharmProjectsYouTube-venvlibsite-packagesyt_dlpextractorcommon.py", line 666, in extract
    raise type(e)(e.orig_msg, **kwargs)
yt_dlp.utils.ExtractorError: [youtube] FvnQJZnnXXo: Private video. Sign in if you've been granted access to this video

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:UsersUserPycharmProjectsYouTube-YouMain.py", line 105, in <module>
    run()
  File "C:UsersUserPycharmProjectsYouTube-YouMain.py", line 23, in run
    video_info = yb.YoutubeDL().extract_info(
  File "C:UsersUserPycharmProjectsYouTube-venvlibsite-packagesyt_dlpYoutubeDL.py", line 1411, in extract_info
    return self.__extract_info(url, self.get_info_extractor(ie_key), download, extra_info, process)
  File "C:UsersUserPycharmProjectsYouTube-venvlibsite-packagesyt_dlpYoutubeDL.py", line 1438, in wrapper
    self.report_error(str(e), e.format_traceback())
  File "C:UsersUserPycharmProjectsYouTube-venvlibsite-packagesyt_dlpYoutubeDL.py", line 962, in report_error
    self.trouble(f'{self._format_err("ERROR:", self.Styles.ERROR)} {message}', *args, **kwargs)
  File "C:UsersUserPycharmProjectsYouTube-venvlibsite-packagesyt_dlpYoutubeDL.py", line 905, in trouble
    raise DownloadError(message, exc_info)
yt_dlp.utils.DownloadError: ERROR: [youtube] FvnQJZnnXXo: Private video. Sign in if you've been granted access to this video

Advertisement

Answer

I have fixed the problem. The solution was to change a part of the code, the change is in the def run part from

def run():
    while True:
        video_url = input("nplease enter youtube video url: ")
        video_info = yb.YoutubeDL().extract_info(
            url=video_url, download=False)
        filename = f"{video_info['title']}"

        ydl_opts = {
            'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio/best',
            'download_archive': 'downloaded_songs.txt',
            'windowsfilenames': True,
            'outtmpl': data + '/%(title)s.%(ext)s',
            'writesubtitles': True,
            'subtitleslangs': ['en', '-live_chat'],
            'writethumbnail': True,
            'embedthumbnail': True,
            'abort_on_unavailable_fragments': False,
            'ignoreerrors': True,
            'verbose': True,
            'postprocessors': [
                {'key': 'FFmpegMetadata',
                 'add_metadata': True, },
                {'key': 'FFmpegEmbedSubtitle'},
                {'key': 'EmbedThumbnail',
                 'already_have_thumbnail': True,
                 },
            ]
        }

        with yb.YoutubeDL(ydl_opts) as ydl:
            ydl.download([video_info['webpage_url']])
            print("nDownload complete... {}".format(filename))
            thumbnail_path()
            clear()

to

def run():
    while True:
        video_url = input("nplease enter youtube video url: ")
        ydl_opts = {
            'format': 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio/best',
            'download_archive': 'downloaded_songs.txt',
            'windowsfilenames': True,
            'outtmpl': data + '/%(title)s.%(ext)s',
            'writesubtitles': True,
            'subtitleslangs': ['en', '-live_chat'],
            'writethumbnail': True,
            'embedthumbnail': True,
            'ignoreerrors': True,
            'postprocessors': [
                {'key': 'FFmpegMetadata',
                 'add_metadata': True, },
                {'key': 'FFmpegEmbedSubtitle'},
                {'key': 'EmbedThumbnail',
                 'already_have_thumbnail': True,
                 },
            ],
        }

        with yt_dlp.YoutubeDL(ydl_opts) as ydl:
            error_code = ydl.download([video_url])
            video_info = ydl.extract_info(url=video_url, download=False)
            filename = f"{video_info['title']}"
            print('Some videos failed to download {}'.format(filename) if error_code
                  else "nDownload complete... {}".format(filename))
            thumbnail_path()
            clear()

the problem come from

video_info = yb.YoutubeDL().extract_info(url=video_url, download=False)

It would try to get the video info

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement