Refactor #2
145
src/video.py
145
src/video.py
@@ -23,17 +23,17 @@ class Video(object):
|
|||||||
Represent a video, existing or not.
|
Represent a video, existing or not.
|
||||||
:param str name: name or path of the video.
|
:param str name: name or path of the video.
|
||||||
:param str format: format of the video (HDTV, WEB-DL, BluRay, ...).
|
:param str format: format of the video (HDTV, WEB-DL, BluRay, ...).
|
||||||
:param str home: home is the optimal parent folder.
|
:param str release_group: release group of the video.
|
||||||
:param str resolution: resolution of the video stream (480p, 720p, 1080p or 1080i, 4K).
|
:param str resolution: resolution of the video stream (480p, 720p, 1080p or 1080i, 4K).
|
||||||
:param str video_codec: codec of the video stream.
|
:param str video_codec: codec of the video stream.
|
||||||
:param str audio_codec: codec of the main audio stream.
|
:param str audio_codec: codec of the main audio stream.
|
||||||
:param str imdb_id: IMDb id of the video.
|
:param str home: optimal parent folder.
|
||||||
:param dict name_hash: hashes of the video file by provider names.
|
:param dict name_hash: hashes of the video file by provider names.
|
||||||
:param int size: size of the video file in bytes.
|
:param int size: size of the video file in bytes.
|
||||||
:param set subtitles: existing subtitle languages.
|
:param set subtitles: existing subtitle languages.
|
||||||
"""
|
"""
|
||||||
def __init__(self, name, hash=None, size=None, format=None, home=None, resolution=None, video_codec=None, audio_codec=None,
|
def __init__(self, name, hash=None, size=None, format=None, release_group=None, resolution=None, video_codec=None, audio_codec=None,
|
||||||
imdb_id=None, subtitles=None, embeded_subtitles=None):
|
home=None, subtitles=None, embeded_subtitles=None):
|
||||||
#: Name or path of the video
|
#: Name or path of the video
|
||||||
self.name = name
|
self.name = name
|
||||||
|
|
||||||
@@ -58,8 +58,8 @@ class Video(object):
|
|||||||
#: Codec of the main audio stream
|
#: Codec of the main audio stream
|
||||||
self.audio_codec = audio_codec
|
self.audio_codec = audio_codec
|
||||||
|
|
||||||
#: IMDb id of the video
|
#: optimal home path; parent folder.
|
||||||
self.imdb_id = imdb_id
|
self.home = home
|
||||||
|
|
||||||
#: Existing subtitle languages
|
#: Existing subtitle languages
|
||||||
self.subtitles = subtitles or set()
|
self.subtitles = subtitles or set()
|
||||||
@@ -121,7 +121,7 @@ class Episode(Video):
|
|||||||
:param \*\*kwargs: additional parameters for the :class:`Video` constructor.
|
:param \*\*kwargs: additional parameters for the :class:`Video` constructor.
|
||||||
"""
|
"""
|
||||||
def __init__(self, name, series, season, episode, title=None, year=None, original_series=True, tvdb_id=None,
|
def __init__(self, name, series, season, episode, title=None, year=None, original_series=True, tvdb_id=None,
|
||||||
series_tvdb_id=None, series_imdb_id=None, **kwargs):
|
series_tvdb_id=None, **kwargs):
|
||||||
super(Episode, self).__init__(name, **kwargs)
|
super(Episode, self).__init__(name, **kwargs)
|
||||||
|
|
||||||
#: Series of the episode
|
#: Series of the episode
|
||||||
@@ -148,9 +148,6 @@ class Episode(Video):
|
|||||||
#: TVDB id of the series
|
#: TVDB id of the series
|
||||||
self.series_tvdb_id = series_tvdb_id
|
self.series_tvdb_id = series_tvdb_id
|
||||||
|
|
||||||
#: IMDb id of the series
|
|
||||||
self.series_imdb_id = series_imdb_id
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def fromguess(cls, name, guess):
|
def fromguess(cls, name, guess):
|
||||||
if guess['type'] != 'episode':
|
if guess['type'] != 'episode':
|
||||||
@@ -212,131 +209,3 @@ class Movie(Video):
|
|||||||
return '<%s [%r]>' % (self.__class__.__name__, self.title)
|
return '<%s [%r]>' % (self.__class__.__name__, self.title)
|
||||||
|
|
||||||
return '<%s [%r, %d]>' % (self.__class__.__name__, self.title, self.year)
|
return '<%s [%r, %d]>' % (self.__class__.__name__, self.title, self.year)
|
||||||
|
|
||||||
'''
|
|
||||||
class Episode():
|
|
||||||
"""Episode :class:`Video`.
|
|
||||||
:param str series: series of the episode.
|
|
||||||
:param int season: season number of the episode.
|
|
||||||
:param int episode: episode number of the episode.
|
|
||||||
:param str title: title of the episode.
|
|
||||||
:param int year: year of the series.
|
|
||||||
:param bool original_series: whether the series is the first with this name.
|
|
||||||
:param int tvdb_id: TVDB id of the episode.
|
|
||||||
:param \*\*kwargs: additional parameters for the :class:`Video` constructor.
|
|
||||||
"""
|
|
||||||
def __init__(self, name, parent_path, series, season, episode, year=None, original_series=True, tvdb_id=None,
|
|
||||||
series_tvdb_id=None, series_imdb_id=None, release_group=None, video_codec=None, container=None,
|
|
||||||
format=None, screen_size=None, **kwargs):
|
|
||||||
super(Episode, self).__init__()
|
|
||||||
|
|
||||||
self.name = name
|
|
||||||
|
|
||||||
self.parent_path = parent_path
|
|
||||||
|
|
||||||
#: Series of the episode
|
|
||||||
self.series = series
|
|
||||||
|
|
||||||
#: Season number of the episode
|
|
||||||
self.season = season
|
|
||||||
|
|
||||||
#: Episode number of the episode
|
|
||||||
self.episode = episode
|
|
||||||
|
|
||||||
#: Year of series
|
|
||||||
self.year = year
|
|
||||||
|
|
||||||
#: The series is the first with this name
|
|
||||||
self.original_series = original_series
|
|
||||||
|
|
||||||
#: TVDB id of the episode
|
|
||||||
self.tvdb_id = tvdb_id
|
|
||||||
|
|
||||||
#: TVDB id of the series
|
|
||||||
self.series_tvdb_id = series_tvdb_id
|
|
||||||
|
|
||||||
#: IMDb id of the series
|
|
||||||
self.series_imdb_id = series_imdb_id
|
|
||||||
|
|
||||||
# The release group of the episode
|
|
||||||
self.release_group = release_group
|
|
||||||
|
|
||||||
# The video vodec of the series
|
|
||||||
self.video_codec = video_codec
|
|
||||||
|
|
||||||
# The Video container of the episode
|
|
||||||
self.container = container
|
|
||||||
|
|
||||||
# The Video format of the episode
|
|
||||||
self.format = format
|
|
||||||
|
|
||||||
# The Video screen_size of the episode
|
|
||||||
self.screen_size = screen_size
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def fromguess(cls, name, parent_path, guess):
|
|
||||||
if guess['type'] != 'episode':
|
|
||||||
raise ValueError('The guess must be an episode guess')
|
|
||||||
|
|
||||||
if 'title' not in guess or 'episode' not in guess:
|
|
||||||
raise ValueError('Insufficient data to process the guess')
|
|
||||||
|
|
||||||
return cls(name, parent_path, guess['title'], guess.get('season', 1), guess['episode'],
|
|
||||||
year=guess.get('year'), original_series='year' not in guess, release_group=guess.get('release_group'),
|
|
||||||
video_codec=guess.get('video_codec'), audio_codec=guess.get('audio_codec'), container=guess.get('container'),
|
|
||||||
format=guess.get('format'), screen_size=guess.get('screen_size'))
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def fromname(cls, name):
|
|
||||||
return cls.fromguess(name, guessit(name, {'type': 'episode'}))
|
|
||||||
|
|
||||||
def __hash__(self):
|
|
||||||
return hashlib.md5("b'{}'".format(str(self.series) + str(self.season) + str(self.episode)).encode()).hexdigest()
|
|
||||||
|
|
||||||
# THE EP NUMBER IS CONVERTED TO STRING AS A QUICK FIX FOR MULTIPLE NUMBERS IN ONE
|
|
||||||
def __repr__(self):
|
|
||||||
if self.year is None:
|
|
||||||
return '<%s [%r, %sx%s]>' % (self.__class__.__name__, self.series, self.season, str(self.episode))
|
|
||||||
|
|
||||||
return '<%s [%r, %d, %sx%s]>' % (self.__class__.__name__, self.series, self.year, self.season, str(self.episode))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Movie():
|
|
||||||
"""Movie :class:`Video`.
|
|
||||||
:param str title: title of the movie.
|
|
||||||
:param int year: year of the movie.
|
|
||||||
:param \*\*kwargs: additional parameters for the :class:`Video` constructor.
|
|
||||||
"""
|
|
||||||
def __init__(self, name, title, year=None, format=None, **kwargs):
|
|
||||||
super(Movie, self).__init__()
|
|
||||||
|
|
||||||
#: Title of the movie
|
|
||||||
self.title = title
|
|
||||||
|
|
||||||
#: Year of the movie
|
|
||||||
self.year = year
|
|
||||||
self.format = format
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def fromguess(cls, name, guess):
|
|
||||||
if guess['type'] != 'movie':
|
|
||||||
raise ValueError('The guess must be a movie guess')
|
|
||||||
|
|
||||||
if 'title' not in guess:
|
|
||||||
raise ValueError('Insufficient data to process the guess')
|
|
||||||
|
|
||||||
return cls(name, guess['title'], format=guess.get('format'), release_group=guess.get('release_group'),
|
|
||||||
resolution=guess.get('screen_size'), video_codec=guess.get('video_codec'),
|
|
||||||
audio_codec=guess.get('audio_codec'), year=guess.get('year'))
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def fromname(cls, name):
|
|
||||||
return cls.fromguess(name, guessit(name, {'type': 'movie'}))
|
|
||||||
|
|
||||||
def __repr__(self):
|
|
||||||
if self.year is None:
|
|
||||||
return '<%s [%r]>' % (self.__class__.__name__, self.title)
|
|
||||||
|
|
||||||
return '<%s [%r, %d]>' % (self.__class__.__name__, self.title, self.year)
|
|
||||||
'''
|
|
||||||
|
|||||||
Reference in New Issue
Block a user