- Improve annotation algorithm for Youtube (and others)
- Patch Pytube - improve OS deletion of files and writing of files - Start working on Claude - Improve template management
This commit is contained in:
145
patched_packages/pytube/exceptions.py
Normal file
145
patched_packages/pytube/exceptions.py
Normal file
@@ -0,0 +1,145 @@
|
||||
"""Library specific exception definitions."""
|
||||
from typing import Pattern, Union
|
||||
|
||||
|
||||
class PytubeError(Exception):
|
||||
"""Base pytube exception that all others inherit.
|
||||
|
||||
This is done to not pollute the built-in exceptions, which *could* result
|
||||
in unintended errors being unexpectedly and incorrectly handled within
|
||||
implementers code.
|
||||
"""
|
||||
|
||||
|
||||
class MaxRetriesExceeded(PytubeError):
|
||||
"""Maximum number of retries exceeded."""
|
||||
|
||||
|
||||
class HTMLParseError(PytubeError):
|
||||
"""HTML could not be parsed"""
|
||||
|
||||
|
||||
class ExtractError(PytubeError):
|
||||
"""Data extraction based exception."""
|
||||
|
||||
|
||||
class RegexMatchError(ExtractError):
|
||||
"""Regex pattern did not return any matches."""
|
||||
|
||||
def __init__(self, caller: str, pattern: Union[str, Pattern]):
|
||||
"""
|
||||
:param str caller:
|
||||
Calling function
|
||||
:param str pattern:
|
||||
Pattern that failed to match
|
||||
"""
|
||||
super().__init__(f"{caller}: could not find match for {pattern}")
|
||||
self.caller = caller
|
||||
self.pattern = pattern
|
||||
|
||||
|
||||
class VideoUnavailable(PytubeError):
|
||||
"""Base video unavailable error."""
|
||||
def __init__(self, video_id: str):
|
||||
"""
|
||||
:param str video_id:
|
||||
A YouTube video identifier.
|
||||
"""
|
||||
self.video_id = video_id
|
||||
super().__init__(self.error_string)
|
||||
|
||||
@property
|
||||
def error_string(self):
|
||||
return f'{self.video_id} is unavailable'
|
||||
|
||||
|
||||
class AgeRestrictedError(VideoUnavailable):
|
||||
"""Video is age restricted, and cannot be accessed without OAuth."""
|
||||
def __init__(self, video_id: str):
|
||||
"""
|
||||
:param str video_id:
|
||||
A YouTube video identifier.
|
||||
"""
|
||||
self.video_id = video_id
|
||||
super().__init__(self.video_id)
|
||||
|
||||
@property
|
||||
def error_string(self):
|
||||
return f"{self.video_id} is age restricted, and can't be accessed without logging in."
|
||||
|
||||
|
||||
class LiveStreamError(VideoUnavailable):
|
||||
"""Video is a live stream."""
|
||||
def __init__(self, video_id: str):
|
||||
"""
|
||||
:param str video_id:
|
||||
A YouTube video identifier.
|
||||
"""
|
||||
self.video_id = video_id
|
||||
super().__init__(self.video_id)
|
||||
|
||||
@property
|
||||
def error_string(self):
|
||||
return f'{self.video_id} is streaming live and cannot be loaded'
|
||||
|
||||
|
||||
class VideoPrivate(VideoUnavailable):
|
||||
def __init__(self, video_id: str):
|
||||
"""
|
||||
:param str video_id:
|
||||
A YouTube video identifier.
|
||||
"""
|
||||
self.video_id = video_id
|
||||
super().__init__(self.video_id)
|
||||
|
||||
@property
|
||||
def error_string(self):
|
||||
return f'{self.video_id} is a private video'
|
||||
|
||||
|
||||
class RecordingUnavailable(VideoUnavailable):
|
||||
def __init__(self, video_id: str):
|
||||
"""
|
||||
:param str video_id:
|
||||
A YouTube video identifier.
|
||||
"""
|
||||
self.video_id = video_id
|
||||
super().__init__(self.video_id)
|
||||
|
||||
@property
|
||||
def error_string(self):
|
||||
return f'{self.video_id} does not have a live stream recording available'
|
||||
|
||||
|
||||
class MembersOnly(VideoUnavailable):
|
||||
"""Video is members-only.
|
||||
|
||||
YouTube has special videos that are only viewable to users who have
|
||||
subscribed to a content creator.
|
||||
ref: https://support.google.com/youtube/answer/7544492?hl=en
|
||||
"""
|
||||
def __init__(self, video_id: str):
|
||||
"""
|
||||
:param str video_id:
|
||||
A YouTube video identifier.
|
||||
"""
|
||||
self.video_id = video_id
|
||||
super().__init__(self.video_id)
|
||||
|
||||
@property
|
||||
def error_string(self):
|
||||
return f'{self.video_id} is a members-only video'
|
||||
|
||||
|
||||
class VideoRegionBlocked(VideoUnavailable):
|
||||
def __init__(self, video_id: str):
|
||||
"""
|
||||
:param str video_id:
|
||||
A YouTube video identifier.
|
||||
"""
|
||||
self.video_id = video_id
|
||||
super().__init__(self.video_id)
|
||||
|
||||
@property
|
||||
def error_string(self):
|
||||
return f'{self.video_id} is not available in your region'
|
||||
Reference in New Issue
Block a user