Skip to content

Commit

Permalink
Merge pull request #39 from shlomiLan/develop
Browse files Browse the repository at this point in the history
develop
  • Loading branch information
mergify[bot] committed Mar 13, 2019
2 parents e705349 + 3e0e03a commit a17590d
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 13 deletions.
1 change: 1 addition & 0 deletions dev.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
python_http_client
# install all base requirements
-r requirements.txt

Expand Down
54 changes: 42 additions & 12 deletions tvsort_sl/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,14 @@
from tvsort_sl.messages import send_email


PROCESS_RUNNING = 'Proses already running'


class TvSort(object):
project_name = 'tvsort_sl'
settings: Dict[str, Union[str, bool]] = dict(PROJECT_NAME=project_name, LOG_PATH=os.path.join(BASE_DIR, 'logs'))
settings: Dict[str, Union[str, bool]] = dict(
PROJECT_NAME=project_name, LOG_PATH=os.path.join(BASE_DIR, 'logs')
)
extensions: Dict[str, List[str]] = dict()
logger = None

Expand All @@ -37,7 +42,7 @@ def __init__(self, is_test=False, **kwargs):

def run(self):
if utils.is_process_already_running(self.settings.get('DUMMY_FILE_PATH')):
self.process_response([('error', 'Proses already running')])
self.process_response([('error', PROCESS_RUNNING)])
return

try:
Expand Down Expand Up @@ -69,16 +74,27 @@ def run(self):
return

def create_logger(self, log_level=logging.INFO):
daiquiri.setup(outputs=(daiquiri.output.File(directory=self.settings.get('LOG_PATH'),
program_name=self.project_name), daiquiri.output.STDOUT,))
daiquiri.setup(
outputs=(
daiquiri.output.File(
directory=self.settings.get('LOG_PATH'),
program_name=self.project_name,
),
daiquiri.output.STDOUT,
)
)

daiquiri.getLogger(program_name=self.project_name).logger.level = log_level
self.logger = daiquiri.getLogger(program_name=self.project_name, log_level=log_level)
self.logger = daiquiri.getLogger(
program_name=self.project_name, log_level=log_level
)

def scan_archives(self):
for file_path in utils.get_files(self.unsorted_path):
if utils.is_compressed(file_path, self.extensions):
patoolib.extract_archive(file_path, outdir=self.unsorted_path, verbosity=-1)
patoolib.extract_archive(
file_path, outdir=self.unsorted_path, verbosity=-1
)
self.process_response(['info', f'Extracting {file_path}'])
response = utils.delete_file(file_path)
self.process_response(response)
Expand All @@ -93,7 +109,9 @@ def scan_videos(self):
self.process_response(response)
continue

video = guessit.guessit(file_path, options={'expected_title': ['This Is Us']})
video = guessit.guessit(
file_path, options={'expected_title': ['This Is Us']}
)
new_path = None

# Episode
Expand All @@ -116,7 +134,9 @@ def scan_videos(self):
new_path = self.settings.get('MOVIES_PATH')

# Copy / Move the video file
response = utils.copy_file(file_path, new_path, move_file=self.settings.get('MOVE_FILES'))
response = utils.copy_file(
file_path, new_path, move_file=self.settings.get('MOVE_FILES')
)
self.process_response(response)

def process_response(self, response):
Expand All @@ -129,15 +149,25 @@ def process_response(self, response):
self.logger.info(msg_text)
if 'Removing file' in msg_text:
self.report.get('counters')['delete'] += 1
elif any(text in msg_text for text in ['Moving file', 'Copying file']):
elif any(
text in msg_text for text in ['Moving file', 'Copying file']
):
self.report.get('counters')['move_or_copy'] += 1
elif msg_type == 'error':
self.logger.error(msg_text)
self.report.get('counters')['error'] += 1
self.report.get('errors').append(msg_text)
if msg_text not in self.report.get('errors'):
self.report.get('errors').append(msg_text)

def is_send_report(self):
if self.report.get('counters'):
errors = self.report.get('errors')
if errors:
return any(x != PROCESS_RUNNING for x in errors)

return False

def email_report(self):
if self.report.get('counters') and self.report.get('counters').get('error') and self.report.get('counters').get('error') > 0:
if self.is_send_report():
subject = 'TV sort report'
content = json.dumps(self.report)
return send_email(subject=subject, content=content)
Expand Down
6 changes: 5 additions & 1 deletion tvsort_sl/tests/test_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from guessit import guessit

import tvsort_sl.utils as utils
from tvsort_sl.app import PROCESS_RUNNING
from tvsort_sl.conf import get_conf_file_name
from tvsort_sl.tests.test_base import tv_sort

Expand Down Expand Up @@ -69,9 +70,12 @@ def test_main_process_running(_, __):
dummy_file_path = tv_sort.settings.get('DUMMY_FILE_PATH')
utils.create_file(dummy_file_path)
tv_sort.run()
assert 'Proses already running' in tv_sort.report.get('errors')
assert PROCESS_RUNNING in tv_sort.report.get('errors')
tv_sort.run()
tv_sort.run()
response = utils.delete_file(dummy_file_path)
assert response[0][0] == 'info'
assert tv_sort.is_send_report() is False


@mock.patch('requests.post', return_value={'status_code': 200})
Expand Down

0 comments on commit a17590d

Please sign in to comment.