mirror of
https://github.com/SickGear/SickGear.git
synced 2025-03-22 04:27:45 +00:00
90 lines
3.8 KiB
Python
90 lines
3.8 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
from __future__ import print_function, unicode_literals
|
|
from sympy import Eq, symbols, solve
|
|
|
|
|
|
# Symbols
|
|
release_group, resolution, format, video_codec, audio_codec = symbols('release_group resolution format video_codec audio_codec')
|
|
imdb_id, hash, title, series, tvdb_id, season, episode = symbols('imdb_id hash title series tvdb_id season episode') # @ReservedAssignment
|
|
year = symbols('year')
|
|
|
|
|
|
def get_episode_equations():
|
|
"""Get the score equations for a :class:`~subliminal.video.Episode`
|
|
|
|
The equations are the following:
|
|
|
|
1. hash = resolution + format + video_codec + audio_codec + series + season + episode + year + release_group
|
|
2. series = resolution + video_codec + audio_codec + season + episode + release_group + 1
|
|
3. year = series
|
|
4. tvdb_id = series + year
|
|
5. season = resolution + video_codec + audio_codec + 1
|
|
6. imdb_id = series + season + episode + year
|
|
7. format = video_codec + audio_codec
|
|
8. resolution = video_codec
|
|
9. video_codec = 2 * audio_codec
|
|
10. title = season + episode
|
|
11. season = episode
|
|
12. release_group = season
|
|
13. audio_codec = 1
|
|
|
|
:return: the score equations for an episode
|
|
:rtype: list of :class:`sympy.Eq`
|
|
|
|
"""
|
|
equations = []
|
|
equations.append(Eq(hash, resolution + format + video_codec + audio_codec + series + season + episode + year + release_group))
|
|
equations.append(Eq(series, resolution + video_codec + audio_codec + season + episode + release_group + 1))
|
|
equations.append(Eq(series, year))
|
|
equations.append(Eq(tvdb_id, series + year))
|
|
equations.append(Eq(season, resolution + video_codec + audio_codec + 1))
|
|
equations.append(Eq(imdb_id, series + season + episode + year))
|
|
equations.append(Eq(format, video_codec + audio_codec))
|
|
equations.append(Eq(resolution, video_codec))
|
|
equations.append(Eq(video_codec, 2 * audio_codec))
|
|
equations.append(Eq(title, season + episode))
|
|
equations.append(Eq(season, episode))
|
|
equations.append(Eq(release_group, season))
|
|
equations.append(Eq(audio_codec, 1))
|
|
return equations
|
|
|
|
|
|
def get_movie_equations():
|
|
"""Get the score equations for a :class:`~subliminal.video.Movie`
|
|
|
|
The equations are the following:
|
|
|
|
1. hash = resolution + format + video_codec + audio_codec + title + year + release_group
|
|
2. imdb_id = hash
|
|
3. resolution = video_codec
|
|
4. video_codec = 2 * audio_codec
|
|
5. format = video_codec + audio_codec
|
|
6. title = resolution + video_codec + audio_codec + year + 1
|
|
7. release_group = resolution + video_codec + audio_codec + 1
|
|
8. year = release_group + 1
|
|
9. audio_codec = 1
|
|
|
|
:return: the score equations for a movie
|
|
:rtype: list of :class:`sympy.Eq`
|
|
|
|
"""
|
|
equations = []
|
|
equations.append(Eq(hash, resolution + format + video_codec + audio_codec + title + year + release_group))
|
|
equations.append(Eq(imdb_id, hash))
|
|
equations.append(Eq(resolution, video_codec))
|
|
equations.append(Eq(video_codec, 2 * audio_codec))
|
|
equations.append(Eq(format, video_codec + audio_codec))
|
|
equations.append(Eq(title, resolution + video_codec + audio_codec + year + 1))
|
|
equations.append(Eq(video_codec, 2 * audio_codec))
|
|
equations.append(Eq(release_group, resolution + video_codec + audio_codec + 1))
|
|
equations.append(Eq(year, release_group + 1))
|
|
equations.append(Eq(audio_codec, 1))
|
|
return equations
|
|
|
|
|
|
if __name__ == '__main__':
|
|
print(solve(get_episode_equations(), [release_group, resolution, format, video_codec, audio_codec, imdb_id,
|
|
hash, series, tvdb_id, season, episode, title, year]))
|
|
print(solve(get_movie_equations(), [release_group, resolution, format, video_codec, audio_codec, imdb_id,
|
|
hash, title, year]))
|