-
Notifications
You must be signed in to change notification settings - Fork 2
/
SubtitlesClient.py
98 lines (79 loc) · 3.62 KB
/
SubtitlesClient.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/usr/bin/env python
#-*- coding:utf-8 -*-
########################################################
# Name: Subtitles Client
# Site: http://RealGame.co.il
__author__ = 'RealGame (Tomer Zait)'
__license__ = 'GPL v3'
__version__ = '1.0'
__email__ = 'realgam3@gmail.com'
########################################################
from os import path
from sys import argv
from docopt import docopt
from engines.engine import SubtitleSite, SUBTITLE_SITE_LIST, DEFAULTS
__doc__ = \
"""
Subtitles Client
Usage:
{prog} download <releases_path>... [--lang=<language> --engine=<subtitle_site>...]
{prog} exist <releases_path>... [--lang=<language> --engine=<subtitle_site>...]
{prog} test [<engines>...]
{prog} (-l | --list)
{prog} (-h | --help)
{prog} (-v | --version)
Options:
-l --list Show subtitles engine list.
-h --help Show this screen.
-v --version Show version.
--lang=<language> Subtitle language (alpha2) [default: {def_language}].
--engine=<subtitle_site> Subtitle site [default: {def_engine}].
""".format(prog=path.basename(argv[0]),
def_language=DEFAULTS['subtitle_language'],
def_engine=DEFAULTS['subtitle_engine'])
def download_subtitles(releases, engines=[DEFAULTS['subtitle_engine']], lang=DEFAULTS['subtitle_language']):
if releases:
for release in releases:
for engine in engines:
subtitle_release = SubtitleSite.get_file_properties(release)['release_name']
print "[{engine: ^15}] Trying To Download Subtitles For: '{release}'".format(engine=engine,
release=subtitle_release)
sub_obj = SubtitleSite.class_factory(engine)
subtitle_path = sub_obj.download_subtitle(release, lang)
if subtitle_path:
print "{0:17} Download Success: ({file_path}).\n".format("", file_path=subtitle_path)
else:
print "{0:17} Subtitles Not Found.\n".format("")
def is_subtitles_exist(releases, engines=[DEFAULTS['subtitle_engine']], lang=DEFAULTS['subtitle_language']):
if releases:
for release in releases:
for engine in engines:
subtitle_release = SubtitleSite.get_file_properties(release)['release_name']
sub_obj = SubtitleSite.class_factory(engine)
exist_flag = sub_obj.is_subtitle_exist(release, lang)
res = "Exist"
if not exist_flag:
res = "Does Not " + res
print "[{engine: ^15}] '{release}' - {res}.".format(engine=engine,
release=subtitle_release,
res=res)
def test_engines(engines):
if not engines:
engines = SUBTITLE_SITE_LIST.keys()
for engine_key in engines:
t = SubtitleSite.class_factory(engine_key)
t.test_engine()
def main():
args = docopt(__doc__, help=True, version='Subtitles Client %s' % __version__)
if args['download']:
download_subtitles(args['<releases_path>'], args['--engine'], args['--lang'])
elif args['exist']:
is_subtitles_exist(args['<releases_path>'], args['--engine'], args['--lang'])
elif args['test']:
test_engines(args['<engines>'])
elif args['--list']:
for sub_site in SUBTITLE_SITE_LIST.keys():
sub_dict = SUBTITLE_SITE_LIST.get(sub_site)
print sub_dict.get('class_name')
if __name__ == "__main__":
main()