Working on comments and minor bug fixes in the MediaLibrary object

This commit is contained in:
Fabrice Quenneville 2021-04-19 20:20:12 -04:00
parent 4e335a3650
commit ab70af3e21
4 changed files with 67 additions and 47 deletions

View File

@ -17,8 +17,4 @@ Project
Modules
-------
* Add notes to every method/function/class
* revisit all models for Instance, Class, and Staticness
*
*
*
* revisit all models for Instance, Class, and Staticness

View File

@ -30,6 +30,7 @@ The source code can be found on `GitHub <https://github.com/fabquenneville/Media
:maxdepth: 1
:caption: Release Notes:
releasenotes/0.0.6-changelog
releasenotes/0.0.5-changelog
releasenotes/0.0.4-changelog
releasenotes/0.0.1-changelog

View File

@ -1,10 +1,7 @@
#!/usr/bin/env python3
'''
This is the container for all the videos found in the folders passed by the user
'''
''' This is the library object who holds the information about the workspace and all the videos in it.'''
from pathlib import Path
import sys
from .video import Video
from .tools import deletefile
@ -13,23 +10,24 @@ import colorama
colorama.init()
class MediaLibrary():
'''
Contains the information and methods of a video file.
'''
'''
# User options
directories = list()
inputs = list()
filters = list()
# The videos variable holds a dictionary of all videos in Video objects
videos = dict()
'''
''' This is the library object who holds the information about the workspace and all the videos in it. '''
def __init__(self, files = False, directories = False, inputs = ["any"], filters = [], verbose = False):
'''
This is the library object who holds the information about the workspace and all the videos in it.
Args:
files = False : A list of video files
directories = False : A list of directories containing videos directly or in the subdirectories
inputs = ["any"] : A list of filters on input FILES, defaults to keep any files
filters = [] : A list of filters to apply to the VIDEO
verbose = False : A list of print options
Returns:
'''
self.directories = None
self.inputs = None
self.filters = None
self.videos = None
if not hasattr(self, "videos"):
self.videos = dict()
@ -43,13 +41,19 @@ class MediaLibrary():
else:
return
self.inputs = inputs
self.filters = filters
self.inputs = inputs
self.filters = filters
self.load_videos(verbose = verbose)
self.filter_videos(verbose = verbose)
def __str__(self):
''' print '''
''' Returns a sting representations about the current instance of the MediaLibrary object
Args:
Returns:
String : Information about what the MediaLibrary is tracking
'''
if self.directories:
text = f"MediaCurator is watching the following directories: "
@ -61,6 +65,11 @@ class MediaLibrary():
'''
Scan folders for video files respecting the inputs requested by the user
Save them to the videos dictionary
Args:
verbose = False : A list of print options
Returns:
'''
print(f"{colorama.Fore.GREEN}Scanning files in {', '.join(map(str, self.directories))} for videos{colorama.Fore.RESET}")
@ -103,7 +112,13 @@ class MediaLibrary():
self.videos[video] = Video(video, verbose = verbose)
def filter_videos(self, verbose = False):
''' Mark useless videos in the videos dictionary (default is useful) '''
''' Mark useless videos in the videos dictionary (default is useful)
Args:
verbose = False : A list of print options
Returns:
'''
print(f"{colorama.Fore.GREEN}Filtering {len(self.videos)} videos for the requested parameters{colorama.Fore.RESET}")
@ -112,10 +127,6 @@ class MediaLibrary():
# filter for filetypes
if len([filtr for filtr in self.filters if filtr in ["old", "mpeg4", "mpeg", "wmv3", "wmv", "h264", "hevc", "x265", "av1"]]) > 0:
useful = False
if not self.videos[filepath].hasattr("codec"):
print(filepath)
exit()
# ERT1
if "old" in self.filters and self.videos[filepath].codec not in ["hevc", "av1"]:
useful = True
if ("mpeg4" in self.filters or "mpeg" in self.filters) and self.videos[filepath].codec in ["mpeg4", "msmpeg4v3"]:
@ -163,7 +174,15 @@ class MediaLibrary():
print(f"{colorama.Fore.GREEN}Found {len([filepath for filepath in self.videos if self.videos[filepath].useful])} videos for the requested parameters{colorama.Fore.RESET}")
def unwatch(self, filepath, delete = False):
''' remove a video from the index and delete it if requested'''
''' remove a video from the index and delete it if requested
Args:
filepath : A string containing the full filepath
delete = False : Delete the file as well as removing it from the library
Returns:
boolean : Operation success
'''
if delete:
deletefile(filepath)

View File

@ -12,25 +12,29 @@ import colorama
colorama.init()
class Video():
'''Contains the information and methods of a video file.'''
'''
path = str()
filename_origin = str()
filesize = int()
filename_new = str()
filename_tmp = str()
useful = bool()
codec= str()
error = str()
definition = str()
width = int()
height = int()
'''
'''Contains the information and methods of a video file.'''
def __init__(self, filepath, useful = True, verbose = False):
''' creates and analyse a video file '''
'''Contains the information and methods of a video file.
Args:
filepath : A string containing the full filepath
useful :
verbose :
Returns:
:
'''
self.path = None
self.filename_origin = None
self.filesize = None
self.filename_new = None
self.filename_tmp = None
self.useful = None
self.codec = None
self.error = None
self.definition = None
self.width = None
self.height = None
#Breaking down the full path in its components
if os.name == 'nt':