Skip to content

Commit

Permalink
Merge pull request #12 from MinionAttack/development
Browse files Browse the repository at this point in the history
Refactored the code to remove duplicate code and pass the quality gate.
  • Loading branch information
MinionAttack committed Aug 4, 2021
2 parents 7268280 + 5d26c3f commit 01555fd
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 102 deletions.
53 changes: 2 additions & 51 deletions actions/movies_command.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
# -*- coding: utf-8 -*-

import datetime
from typing import Any

from classes.ConvertBytes import HumanBytes
from classes.MoviesCommand import DisplayMovieInformation, DisplayTorrentInformation, Options, SendInformation
from classes.OMDbAPI import MovieByName
from classes.YTS import ByIMDb
from providers.OMDbAPI import search_movie_by_name
from providers.YTS import search_movie_by_imdb
from resources.properties import IMAGE_FORMAT, RESOLUTION_QUALITY
from resources.properties import IMAGE_FORMAT
from src.logger import logger
from src.utils import join_remaining_parts, message_exceeds_size
from src.utils import join_remaining_parts, message_exceeds_size, parse_name, parse_year, parse_quality
from strings.movies_command import INCORRECT_MOVIES_FORMAT, SEARCH_SERIES_MOVIE_COMMAND, NO_IMDB_ID_FOUND, NO_TORRENTS_FOUND


Expand Down Expand Up @@ -42,54 +41,6 @@ def process_movies_options(message: str) -> SendInformation:
return query_result


def parse_name(parameter: str) -> str:
name = ''

if parameter.startswith('n '):
name = parameter[2:]
elif parameter.startswith('name '):
name = parameter[5:]

return name


def parse_year(parameter: str) -> Any:
year = ''

if parameter.startswith('y '):
year = parameter[2:]
elif parameter.startswith('year '):
year = parameter[5:]

if is_a_number(year):
return int(year)
else:
return None


def parse_quality(parameter: str) -> str:
raw_input = ''
quality = ''

if parameter.startswith('q '):
raw_input = parameter[2:]
elif parameter.startswith('quality '):
raw_input = parameter[8:]

if is_a_number(raw_input) and f"{raw_input}p" in RESOLUTION_QUALITY:
quality = f"{raw_input}p"

return quality


def is_a_number(number: str) -> bool:
try:
int(number)
return True
except ValueError:
return False


def check_correct_parameters(movie_name: str, year: int, quality: str) -> bool:
return (movie_name != '') and (year is not None and year >= 0) and (quality != '')

Expand Down
54 changes: 3 additions & 51 deletions actions/series_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@

import datetime
import re
from typing import Any, List
from typing import List

from classes.ConvertBytes import HumanBytes
from classes.EZTV import ByIMDb, TorrentAvailable
from classes.OMDbAPI import SeriesByName
from classes.SeriesCommand import DisplayTorrentInformation, Options, SendInformation, TemplateInformation
from providers.EZTV import search_series_by_imdb
from providers.OMDbAPI import search_series_by_name
from resources.properties import EXTRA_QUALITY_OPTIONS, IMAGE_FORMAT, PLATFORMS, RESOLUTION_QUALITY, WEBRIP, WEB_DL
from resources.properties import EXTRA_QUALITY_OPTIONS, IMAGE_FORMAT, PLATFORMS, WEBRIP, WEB_DL
from src.logger import logger
from src.utils import join_remaining_parts, message_exceeds_size
from src.utils import is_a_number, join_remaining_parts, message_exceeds_size, parse_name, parse_year, parse_quality
from strings.series_command import INCORRECT_SERIES_FORMAT, NO_IMDB_ID_FOUND, NO_TORRENTS_FOUND, SEARCH_MOVIE_SERIES_COMMAND
from strings.series_command import SERIES_CAN_CONTAIN_SUBTITLES

Expand Down Expand Up @@ -50,31 +50,6 @@ def process_series_options(message: str) -> SendInformation:
return query_result


def parse_name(parameter: str) -> str:
name = ''

if parameter.startswith('n '):
name = parameter[2:]
elif parameter.startswith('name '):
name = parameter[5:]

return name


def parse_year(parameter: str) -> Any:
year = ''

if parameter.startswith('y '):
year = parameter[2:]
elif parameter.startswith('year '):
year = parameter[5:]

if is_a_number(year):
return int(year)
else:
return None


def parse_season(parameter: str) -> str:
raw_input = ''
season = ''
Expand Down Expand Up @@ -105,29 +80,6 @@ def parse_episode(parameter: str) -> str:
return episode


def parse_quality(parameter: str) -> str:
raw_input = ''
quality = ''

if parameter.startswith('q '):
raw_input = parameter[2:]
elif parameter.startswith('quality '):
raw_input = parameter[8:]

if is_a_number(raw_input) and f"{raw_input}p" in RESOLUTION_QUALITY:
quality = f"{raw_input}p"

return quality


def is_a_number(number: str) -> bool:
try:
int(number)
return True
except ValueError:
return False


def check_correct_parameters(series_name: str, year: int, season: str, episode: str, quality: str) -> bool:
return (series_name != '') and (year is not None and year >= 0) and (season != '') and (episode != '') and (quality != '')

Expand Down
49 changes: 49 additions & 0 deletions src/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import requests

from resources.properties import RESOLUTION_QUALITY
from src.logger import logger


Expand Down Expand Up @@ -34,6 +35,54 @@ def handle_request(api_url: str, headers: Any, parameters: Any) -> Any:
return None


def parse_name(parameter: str) -> str:
name = ''

if parameter.startswith('n '):
name = parameter[2:]
elif parameter.startswith('name '):
name = parameter[5:]

return name


def parse_year(parameter: str) -> Any:
year = ''

if parameter.startswith('y '):
year = parameter[2:]
elif parameter.startswith('year '):
year = parameter[5:]

if is_a_number(year):
return int(year)
else:
return None


def parse_quality(parameter: str) -> str:
raw_input = ''
quality = ''

if parameter.startswith('q '):
raw_input = parameter[2:]
elif parameter.startswith('quality '):
raw_input = parameter[8:]

if is_a_number(raw_input) and f"{raw_input}p" in RESOLUTION_QUALITY:
quality = f"{raw_input}p"

return quality


def is_a_number(number: str) -> bool:
try:
int(number)
return True
except ValueError:
return False


# The maximum number of characters in a message is 4096
def message_exceeds_size(text: str) -> bool:
return len(text) > 4096
Expand Down

0 comments on commit 01555fd

Please sign in to comment.