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