Working on comments and minor bug fixes in the Video object

This commit is contained in:
Fabrice Quenneville 2021-04-19 20:36:11 -04:00
parent ab70af3e21
commit 66ce75cd9f

View File

@ -18,11 +18,11 @@ class Video():
'''Contains the information and methods of a video file. '''Contains the information and methods of a video file.
Args: Args:
filepath : A string containing the full filepath filepath : A string containing the full filepath
useful : useful : A boolean marking if the video is to be operated on
verbose : verbose = False : A list of print options
Returns: Returns:
:
''' '''
self.path = None self.path = None
self.filename_origin = None self.filename_origin = None
@ -70,7 +70,13 @@ class Video():
print(f"{colorama.Fore.RED} {self.error}{colorama.Fore.RESET}") print(f"{colorama.Fore.RED} {self.error}{colorama.Fore.RESET}")
def __str__(self): def __str__(self):
'''Returns a short formated string about the video''' '''Returns a short formated string about the video
Args:
Returns:
String : A short formated string about the video
'''
if type(self.error) is str and "FileNotFoundError" in self.error: if type(self.error) is str and "FileNotFoundError" in self.error:
return self.error return self.error
@ -104,7 +110,13 @@ class Video():
__repr__ = __str__ __repr__ = __str__
def fprint(self): def fprint(self):
'''Returns a long formated string about the video ''' '''Returns a long formated string about the video
Args:
Returns:
String : A long formated string about the video
'''
if type(self.error) is str and "FileNotFoundError" in self.error: if type(self.error) is str and "FileNotFoundError" in self.error:
@ -140,6 +152,15 @@ class Video():
''' '''
Convert to original file to the requested format / codec Convert to original file to the requested format / codec
verbose will print ffmpeg's output verbose will print ffmpeg's output
Args:
vcodec = "x265" : The new video codec, supports av1 or x265
acodec = False : Currently not enabled, will be for audio codecs
extension = "mkv" : A string containing the new video container format and file extention
verbose = False : A boolean enabling verbosity
Returns:
boolean : Operation success
''' '''
# Setting new filename # Setting new filename
@ -200,7 +221,15 @@ class Video():
@staticmethod @staticmethod
def detect_fferror(filepath): def detect_fferror(filepath):
'''Returns a string with the detected errors''' '''Returns a string with the detected errors
Args:
filepath : A string containing the full filepath
Returns:
String : The errors that have been found / happened
False : The lack of errors
'''
try: try:
args = ["ffprobe","-v","error",str(filepath)] args = ["ffprobe","-v","error",str(filepath)]
output = subprocess.check_output(args, stderr=subprocess.STDOUT) output = subprocess.check_output(args, stderr=subprocess.STDOUT)
@ -214,7 +243,15 @@ class Video():
@staticmethod @staticmethod
def detect_codec(filepath): def detect_codec(filepath):
'''Returns a string with the detected codec''' '''Returns a string with the detected codec
Args:
filepath : A string containing the full filepath
Returns:
String : The codec that has been detected
False : An error in the codec fetching process
'''
output = False
try: try:
args = ["ffprobe", "-v", "quiet", "-select_streams", "v:0", "-show_entries", "stream=codec_name", "-of", "default=noprint_wrappers=1:nokey=1", str(filepath)] args = ["ffprobe", "-v", "quiet", "-select_streams", "v:0", "-show_entries", "stream=codec_name", "-of", "default=noprint_wrappers=1:nokey=1", str(filepath)]
output = subprocess.check_output(args, stderr=subprocess.STDOUT) output = subprocess.check_output(args, stderr=subprocess.STDOUT)
@ -229,7 +266,14 @@ class Video():
@staticmethod @staticmethod
def detect_resolution(filepath): def detect_resolution(filepath):
'''Returns a list with the detected width(0) and height(1)''' '''Returns a list with the detected width(0) and height(1)
Args:
filepath : A string containing the full filepath
Returns:
List : the detected width(0) and height(1)
False : An error in the codec fetching process
'''
try: try:
args = ["ffprobe","-v","quiet","-select_streams","v:0", "-show_entries","stream=width,height","-of","csv=s=x:p=0",str(filepath)] args = ["ffprobe","-v","quiet","-select_streams","v:0", "-show_entries","stream=width,height","-of","csv=s=x:p=0",str(filepath)]
output = subprocess.check_output(args, stderr=subprocess.STDOUT) output = subprocess.check_output(args, stderr=subprocess.STDOUT)
@ -246,7 +290,14 @@ class Video():
@staticmethod @staticmethod
def detect_definition(filepath = False, width = False, height = False): def detect_definition(filepath = False, width = False, height = False):
'''Returns a string with the detected definition corrected for dead space''' '''Returns a string with the detected definition corrected for dead space
Args:
filepath : A string containing the full filepath
Returns:
List : The classified definition in width(0) and height(1)
False : An error in the process
'''
if filepath: if filepath:
width, height = Video.detect_resolution(filepath) width, height = Video.detect_resolution(filepath)
if not width and not height: if not width and not height:
@ -264,7 +315,14 @@ class Video():
@staticmethod @staticmethod
def detect_filesize(filepath): def detect_filesize(filepath):
'''Returns an integer with size in mb''' '''Returns an integer with size in mb
Args:
filepath : A string containing the full filepath
Returns:
Integer : The filesize in mb
False : An error in the process
'''
try: try:
size = int(os.path.getsize(filepath) / 1024 / 1024) size = int(os.path.getsize(filepath) / 1024 / 1024)
except subprocess.CalledProcessError: except subprocess.CalledProcessError: