mirror of
https://github.com/clinton-hall/nzbToMedia.git
synced 2025-07-16 02:02:53 -07:00
Refactor path functions from utils to utils.paths
This commit is contained in:
parent
dade3f6698
commit
6cc3df73b3
2 changed files with 53 additions and 44 deletions
|
@ -41,7 +41,11 @@ from core.utils.parsers import (
|
||||||
parse_vuze,
|
parse_vuze,
|
||||||
)
|
)
|
||||||
from core.utils.paths import (
|
from core.utils.paths import (
|
||||||
get_dir_size, make_dir,
|
flatten_dir,
|
||||||
|
get_dir_size,
|
||||||
|
make_dir,
|
||||||
|
onerror,
|
||||||
|
remove_dir,
|
||||||
remote_dir,
|
remote_dir,
|
||||||
remove_empty_folders,
|
remove_empty_folders,
|
||||||
remove_read_only,
|
remove_read_only,
|
||||||
|
@ -156,22 +160,7 @@ def category_search(input_directory, input_name, input_category, root, categorie
|
||||||
|
|
||||||
|
|
||||||
def flatten(output_destination):
|
def flatten(output_destination):
|
||||||
logger.info('FLATTEN: Flattening directory: {0}'.format(output_destination))
|
return flatten_dir(output_destination, list_media_files(output_destination))
|
||||||
for outputFile in list_media_files(output_destination):
|
|
||||||
dir_path = os.path.dirname(outputFile)
|
|
||||||
file_name = os.path.basename(outputFile)
|
|
||||||
|
|
||||||
if dir_path == output_destination:
|
|
||||||
continue
|
|
||||||
|
|
||||||
target = os.path.join(output_destination, file_name)
|
|
||||||
|
|
||||||
try:
|
|
||||||
shutil.move(outputFile, target)
|
|
||||||
except Exception:
|
|
||||||
logger.error('Could not flatten {0}'.format(outputFile), 'FLATTEN')
|
|
||||||
|
|
||||||
remove_empty_folders(output_destination) # Cleanup empty directories
|
|
||||||
|
|
||||||
|
|
||||||
def get_dirs(section, subsection, link='hard'):
|
def get_dirs(section, subsection, link='hard'):
|
||||||
|
@ -280,33 +269,6 @@ def get_dirs(section, subsection, link='hard'):
|
||||||
return list(set(to_return))
|
return list(set(to_return))
|
||||||
|
|
||||||
|
|
||||||
def onerror(func, path, exc_info):
|
|
||||||
"""
|
|
||||||
Error handler for ``shutil.rmtree``.
|
|
||||||
|
|
||||||
If the error is due to an access error (read only file)
|
|
||||||
it attempts to add write permission and then retries.
|
|
||||||
|
|
||||||
If the error is for another reason it re-raises the error.
|
|
||||||
|
|
||||||
Usage : ``shutil.rmtree(path, onerror=onerror)``
|
|
||||||
"""
|
|
||||||
if not os.access(path, os.W_OK):
|
|
||||||
# Is the error an access error ?
|
|
||||||
os.chmod(path, stat.S_IWUSR)
|
|
||||||
func(path)
|
|
||||||
else:
|
|
||||||
raise Exception
|
|
||||||
|
|
||||||
|
|
||||||
def remove_dir(dir_name):
|
|
||||||
logger.info('Deleting {0}'.format(dir_name))
|
|
||||||
try:
|
|
||||||
shutil.rmtree(text_type(dir_name), onerror=onerror)
|
|
||||||
except Exception:
|
|
||||||
logger.error('Unable to delete folder {0}'.format(dir_name))
|
|
||||||
|
|
||||||
|
|
||||||
def clean_dir(path, section, subsection):
|
def clean_dir(path, section, subsection):
|
||||||
cfg = dict(core.CFG[section][subsection])
|
cfg = dict(core.CFG[section][subsection])
|
||||||
if not os.path.exists(path):
|
if not os.path.exists(path):
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
from functools import partial
|
from functools import partial
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import shutil
|
||||||
import stat
|
import stat
|
||||||
|
|
||||||
from six import text_type
|
from six import text_type
|
||||||
|
@ -10,6 +11,33 @@ import core
|
||||||
from core import logger
|
from core import logger
|
||||||
|
|
||||||
|
|
||||||
|
def onerror(func, path, exc_info):
|
||||||
|
"""
|
||||||
|
Error handler for ``shutil.rmtree``.
|
||||||
|
|
||||||
|
If the error is due to an access error (read only file)
|
||||||
|
it attempts to add write permission and then retries.
|
||||||
|
|
||||||
|
If the error is for another reason it re-raises the error.
|
||||||
|
|
||||||
|
Usage : ``shutil.rmtree(path, onerror=onerror)``
|
||||||
|
"""
|
||||||
|
if not os.access(path, os.W_OK):
|
||||||
|
# Is the error an access error ?
|
||||||
|
os.chmod(path, stat.S_IWUSR)
|
||||||
|
func(path)
|
||||||
|
else:
|
||||||
|
raise Exception
|
||||||
|
|
||||||
|
|
||||||
|
def remove_dir(dir_name):
|
||||||
|
logger.info('Deleting {0}'.format(dir_name))
|
||||||
|
try:
|
||||||
|
shutil.rmtree(text_type(dir_name), onerror=onerror)
|
||||||
|
except Exception:
|
||||||
|
logger.error('Unable to delete folder {0}'.format(dir_name))
|
||||||
|
|
||||||
|
|
||||||
def make_dir(path):
|
def make_dir(path):
|
||||||
if not os.path.isdir(path):
|
if not os.path.isdir(path):
|
||||||
try:
|
try:
|
||||||
|
@ -78,3 +106,22 @@ def remove_read_only(filename):
|
||||||
os.chmod(filename, stat.S_IWRITE)
|
os.chmod(filename, stat.S_IWRITE)
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.warning('Cannot change permissions of {file}'.format(file=filename), logger.WARNING)
|
logger.warning('Cannot change permissions of {file}'.format(file=filename), logger.WARNING)
|
||||||
|
|
||||||
|
|
||||||
|
def flatten_dir(destination, files):
|
||||||
|
logger.info('FLATTEN: Flattening directory: {0}'.format(destination))
|
||||||
|
for outputFile in files:
|
||||||
|
dir_path = os.path.dirname(outputFile)
|
||||||
|
file_name = os.path.basename(outputFile)
|
||||||
|
|
||||||
|
if dir_path == destination:
|
||||||
|
continue
|
||||||
|
|
||||||
|
target = os.path.join(destination, file_name)
|
||||||
|
|
||||||
|
try:
|
||||||
|
shutil.move(outputFile, target)
|
||||||
|
except Exception:
|
||||||
|
logger.error('Could not flatten {0}'.format(outputFile), 'FLATTEN')
|
||||||
|
|
||||||
|
remove_empty_folders(destination) # Cleanup empty directories
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue